JP2024530916A - Data transmission between domains of different security levels within a system-on-chip - Google Patents
Data transmission between domains of different security levels within a system-on-chip Download PDFInfo
- Publication number
- JP2024530916A JP2024530916A JP2024505633A JP2024505633A JP2024530916A JP 2024530916 A JP2024530916 A JP 2024530916A JP 2024505633 A JP2024505633 A JP 2024505633A JP 2024505633 A JP2024505633 A JP 2024505633A JP 2024530916 A JP2024530916 A JP 2024530916A
- Authority
- JP
- Japan
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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)
- Memory System (AREA)
Abstract
様々な実例において、システムは、第1のリスク・レベル内で動作するメモリと、第1のリスク・レベルよりも多くのリスクを示す第2のリスク・レベル内で動作する回路と、を含む。回路は、メモリ内の第1のメモリ・アドレスにデータを読み取り及び/又は書き込み、メモリ内の第2のメモリ・アドレスにエラー検出コードを読み取る及び/又は書き込む。
In various instances, a system includes a memory operating within a first risk level and a circuit operating within a second risk level indicating more risk than the first risk level, the circuit reading and/or writing data to a first memory address in the memory and reading and/or writing an error detection code to a second memory address in the memory.
Description
本出願は、2021年7月30日に出願された「TRANSMITTING DATA BETWEEN REGIONS OF VARYING SAFETY INTEGRITY LEVELS IN A SYSTEM ON A CHIP」なる名称のインド仮出願第202111034491号、及び2021年9月16日に出願された「TRANSMITTING DATA BETWEEN REGIONS OF VARYING SAFETY INTEGRITY LEVELS IN A SYSTEM ON A CHIP」なる名称の米国特許出願第17/477,360号の利益を主張し、これらの出願の内容はすべて、参照により本書に組み込まれる。 This application is based on Indian Provisional Application No. 202111034491 entitled "TRANSMITTING DATA BETWEEN REGIONS OF VARYING SAFETY INTEGRITY LEVELS IN A SYSTEM ON A CHIP" filed on July 30, 2021, and "TRANSMITTING DATA BETWEEN REGIONS OF VARYING SAFETY INTEGRITY LEVELS IN A SYSTEM ON A CHIP" filed on September 16, 2021. This application claims the benefit of U.S. patent application Ser. No. 17/477,360 entitled "CHIP," the entire contents of which are incorporated herein by reference.
少なくとも1つの実施例は、回路の第1の領域によって、回路の第2の領域におけるメモリにアクセスすることに関連する。例えば、少なくとも1つの実施例は、本明細書で説明する様々な新規の手法を実装するシステム・オン・チップに関連する。別の例として、少なくとも1つの実施例は、そのようなシステム・オン・チップを含む自律車両に関連する。 At least one embodiment relates to accessing a memory in a second region of a circuit by a first region of a circuit. For example, at least one embodiment relates to a system-on-chip that implements various novel techniques described herein. As another example, at least one embodiment relates to an autonomous vehicle that includes such a system-on-chip.
自動車安全水準(ASIL:Automotive Safety Integrity Level)は、国際標準化機構(ISO:International Organization for Standardization)26262機能安全規格によって定義された道路車両の機能安全のためのリスク分類システムである。このリスク分類システムには、ASIL-A、ASIL-B、ASIL-C、及びASIL-Dとして識別される4つのリスク分類レベルがあり、ASIL-Dが最も高いリスク分類レベルである。したがって、ASIL-Dとして指定されたコンポーネントは、より低いリスク分類レベル(ASIL-Bなど)が指定されたコンポーネントよりも安全要件が高く、また、より高価になる場合がある。多くの車載プラットフォームでは、自律又は半自律車両の様々な運転機能を制御する車載システム・オン・チップ(SoC:System on a Chip)に特定の障害が検出されると、少なくとも一部の安全サービスが外部制御ユニットによって実行される。一般的に、外部制御ユニットは、車載SoC(例えば、ASIL-B)よりも高いリスク・レベル(例えば、ASIL-D)で動作し得る。 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) 26262 functional safety standard. This risk classification system has four risk classification levels identified as ASIL-A, ASIL-B, ASIL-C, and ASIL-D, with ASIL-D being the highest risk classification level. Thus, components designated as ASIL-D have higher safety requirements and may be more expensive than components designated with a lower risk classification level (such as ASIL-B). In many automotive platforms, at least some safety services are performed by an external control unit upon detection of certain faults in the on-board system on a chip (SoC) that controls various driving functions of the autonomous or semi-autonomous vehicle. Typically, the external control unit may operate at a higher risk level (e.g., ASIL-D) than the on-board SoC (e.g., ASIL-B).
残念ながら、このような外部制御ユニットはレイテンシを発生させ、また、DRAM、不揮発性メモリなど、車載SoCにも存在し、且つ各々が車載プラットフォーム内(例えば、回路基板上)のスペースを占有する別個のコンポーネントを必要とするため、高価になる可能性がある。 Unfortunately, such external control units introduce latency and can be expensive because they require separate components, such as DRAM, non-volatile memory, etc., that are also present on the vehicle SoC and each take up space within the vehicle platform (e.g., on a circuit board).
システム・オン・チップの領域を分離する本システム及び方法について、添付の図面を参照して以下に詳細に説明する。 The system and method for isolating regions of a system-on-chip are described in detail below with reference to the accompanying drawings.
より高いリスク・レベル(例えば、ASIL-D)で動作している回路の領域を、より低いリスク・レベル(例えば、ASIL-B)で動作している回路の他の領域から分離することに関連するシステム及び方法が開示される。例えば、機能安全専用の領域又は「アイランド」は、車載SoCなどのシステム・オン・チップ(「SoC」)上の他のコンポーネントから(例えば、通信上)分離することができる。図1は、少なくとも1つの実施例による車載プラットフォーム100の例の図である。車載プラットフォーム100は、自律車両1200(図12を参照)の例などの自律又は半自律車両を実装することができる。車載プラットフォーム100は、自動車技術者協会(SAE:Society of Automotive Engineers)によって定義されているレベル0(運転自動化なし)よりも高い運転自律性のレベルを実装することができる車載処理システム102を含む。例えば、車載処理システム102は、SAEによって定義されているレベル2(部分運転自動化)からレベル5(完全運転自動化)まで実装することができる。レベル2システムは、高度運転者支援システム(ADAS:Advanced Driver Assistance System)と呼ばれることがある。 Systems and methods related to isolating areas of circuitry operating at a higher risk level (e.g., ASIL-D) from other areas of circuitry operating at a lower risk level (e.g., ASIL-B) are disclosed. For example, an area or "island" dedicated to functional safety can be isolated (e.g., communication-wise) from other components on a system-on-chip ("SoC") such as an automotive SoC. FIG. 1 is a diagram of an example of an automotive platform 100 according to at least one embodiment. The automotive platform 100 can implement an autonomous or semi-autonomous vehicle, such as an example of an autonomous vehicle 1200 (see FIG. 12). The automotive platform 100 includes an on-board processing system 102 that can implement a level of driving autonomy higher than Level 0 (no driving automation) as defined by the Society of Automotive Engineers (SAE). For example, the in-vehicle processing system 102 may implement Level 2 (partial driving automation) through Level 5 (full driving automation) as defined by the SAE. Level 2 systems are sometimes referred to as Advanced Driver Assistance Systems (ADAS).
車載処理システム102は、少なくとも1つの車載SoC104を含む。車載SoC104は、少なくともいくつかの機能を実行するが、1つ又は複数の安全機能を任意選択の外部制御ユニット106(例えば、外部ASIL-Dマイクロコントローラ・ユニットを含む)にオフロードすることができる。任意選択の外部制御ユニット106は、車載SoC104よりも高いリスク分類レベル(例えば、ASIL-D)で動作し、これに準拠し得る。任意選択の外部制御ユニット106を含む実施例では、車載SoC104で障害が発生すると、その障害は任意選択の外部制御ユニット106に伝達される。このユニット106は、車載プラットフォーム100を安全な状態に戻すために1つ又は複数の措置を行うことができる。このため、安全機能の少なくとも一部が任意選択の外部制御ユニット106によって実行され得る。しかしながら、任意選択の外部制御ユニット106は、レイテンシを発生させる場合があり、また、各々が車載プラットフォーム100内(例えば、回路基板上)のスペースを占有する、DRAM、不揮発性メモリなどの別個のコンポーネントが必要になり得るため、高価になる可能性がある。 The vehicle processing system 102 includes at least one vehicle SoC 104. The vehicle SoC 104 performs at least some functions, but may offload one or more safety functions to an optional external control unit 106 (e.g., including an external ASIL-D microcontroller unit). The optional external control unit 106 may operate at and comply with a higher risk classification level (e.g., ASIL-D) than the vehicle SoC 104. In an embodiment including an optional external control unit 106, if a fault occurs in the vehicle SoC 104, the fault is communicated to the optional external control unit 106. This unit 106 may take one or more actions to return the vehicle platform 100 to a safe state. Thus, at least a portion of the safety functions may be performed by the optional external control unit 106. However, the optional external control unit 106 may introduce latency and may be expensive because it may require separate components such as DRAM, non-volatile memory, etc., each of which occupies space within the vehicle platform 100 (e.g., on a circuit board).
任意選択の外部制御ユニット106によって発生するレイテンシと費用の少なくとも一部を回避するために、図1の車載プラットフォーム100は、車載SoC104に統合された機能安全アイランド又は安全アイランド(SI:Safety Island)110を含む。SI110は、車載SoC104の残りの部分と比較してより高いリスク分類レベル(例えば、ASIL-D)で動作し、これに準拠するコンピュート・クラスタとして実装され得る。SI110は、任意選択の外部制御ユニット106によって通常実行される機能の少なくとも一部を実行することができる。SI110の存在は、任意選択の外部制御ユニット106を完全に省略したり、性能の低い及び/又はコストの低い外部制御ユニットを使用して実装したりすることを可能にする。例えば、任意選択の外部制御ユニット106が存在する場合、コントローラ・エリア・ネットワーク(CAN:Controller Area Networkバス)バス上での通信の提供、車載SoC104のリセット・コントローラの提供、及び/又はオンボード電圧モニタリングの実行など、1つ又は複数のレガシー機能を実行することができる。 To avoid at least some of the latency and expense incurred by the optional external control unit 106, the vehicle platform 100 of FIG. 1 includes a functional safety island or safety island (SI) 110 integrated into the vehicle SoC 104. The SI 110 may be implemented as a compute cluster that operates at and complies with a higher risk classification level (e.g., ASIL-D) compared to the rest of the vehicle SoC 104. The SI 110 may perform at least some of the functions normally performed by the optional external control unit 106. The presence of the SI 110 allows the optional external control unit 106 to be omitted entirely or to be implemented using a lower performance and/or lower cost external control unit. For example, if present, the optional external control unit 106 may perform one or more legacy functions, such as providing communication over a Controller Area Network (CAN) bus, providing a reset controller for the vehicle SoC 104, and/or performing on-board voltage monitoring.
車載SoC104及び任意選択の外部制御ユニット106(存在する場合)に加えて、車載処理システム102は、車載SoC104用の第1の(SoC)クロック112、SI110用の第2の(SI)クロック114、及び電力管理集積回路(IC:Integrated Circuit)116を含み得る。車載処理システム102のコンポーネントの各々は、少なくとも部分的にハードウェアに実装されている。車載処理システム102の論理コンポーネント(例えば、車載SoC104及び任意選択の外部制御ユニット106)の各々は、通常、1つ又は複数の集積回路チップ内のハードウェア論理回路に実装されている。論理は、ハードワイヤード若しくはプログラム可能であるか、又はハードワイヤードとプログラム可能な要素の組み合わせであり得る。加えて又は或いは、車載処理システム102のある機能は、組み込みマイクロプロセッサ又はマイクロコントローラによって実行されるソフトウェア又はファームウェアに実装されてもよい。 In addition to the vehicle SoC 104 and optional external control unit 106 (if present), the vehicle processing system 102 may include a first (SoC) clock 112 for the vehicle SoC 104, a second (SI) clock 114 for the SI 110, and a power management integrated circuit (IC) 116. Each of the components of the vehicle processing system 102 is implemented at least partially in hardware. Each of the logical components of the vehicle processing system 102 (e.g., the vehicle SoC 104 and optional external control unit 106) is typically implemented in hardware logic circuits in one or more integrated circuit chips. The logic may be hardwired or programmable, or a combination of hardwired and programmable elements. Additionally or alternatively, certain functions of the vehicle processing system 102 may be implemented in software or firmware executed by an embedded microprocessor or microcontroller.
第1のクロック112及び第2のクロック114は、2つの別個のクロック信号を車載SoC104に提供する。具体的には、第1の(SoC)クロック112によって生成された第1のクロック信号が、SI110以外の車載SoC104のコンポーネント160に提供され、第2の(SI)クロック114によって生成された第2のクロック信号がSI110に提供される。したがって、SI110及び他のコンポーネント160は、別個のクロック・ドメイン内で動作していると特徴付けることができる。SI110のクロック・ドメインはSIクロック・ドメインと呼ばれ、他のコンポーネント160のクロック・ドメインはSoCクロック・ドメインと呼ばれる。第1のクロック112及び第2のクロック114の各々は、少なくとも部分的に水晶発振器として実装され得る。第1の(SoC)クロック112は、ワイヤ、信号トレースなどの第1のクロック接続(図示せず)を介して、車載SoC104の他のコンポーネント160の少なくとも一部の各々に接続され得る。したがって、第1の(SoC)クロック112は、第1のクロック接続(図示せず)を介して、車載SoC104の他のコンポーネント160に第1のクロック信号を提供することができる。第2の(SI)クロック114は、ワイヤ、信号トレースなどの第2のクロック接続(図示せず)を介して、SI110のコンポーネントの少なくとも一部の各々に接続され得る。したがって、第2の(SI)クロック114は、第2のクロック接続(図示せず)を介して、SI110に第2のクロック信号を提供することができる。 The first clock 112 and the second clock 114 provide two separate clock signals to the vehicle SoC 104. Specifically, a first clock signal generated by the first (SoC) clock 112 is provided to the components 160 of the vehicle SoC 104 other than the SI 110, and a second clock signal generated by the second (SI) clock 114 is provided to the SI 110. Thus, the SI 110 and the other components 160 can be characterized as operating in separate clock domains. The clock domain of the SI 110 is referred to as the SI clock domain, and the clock domain of the other components 160 is referred to as the SoC clock domain. Each of the first clock 112 and the second clock 114 may be implemented at least in part as a crystal oscillator. The first (SoC) clock 112 may be connected to each of at least some of the other components 160 of the vehicle SoC 104 via a first clock connection (not shown), such as a wire, signal trace, etc. Thus, the first (SoC) clock 112 may provide a first clock signal to the other components 160 of the vehicle SoC 104 via the first clock connection (not shown). The second (SI) clock 114 may be connected to each of at least some of the components of the SI 110 via a second clock connection (not shown), such as a wire, signal trace, etc. Thus, the second (SI) clock 114 may provide a second clock signal to the SI 110 via the second clock connection (not shown).
電力管理IC116は、車載処理システム102の他のコンポーネントに電力を供給する。例えば、電力レール又は接続118A~118Cが、それぞれ、電力管理IC116を車載SoC104の他のコンポーネント160、SI110、及び任意選択の外部制御ユニット106に接続する。電力接続部118A~118Cは、それぞれ、車載SoC104の他のコンポーネント160、SI110、及び任意選択の外部制御ユニット106(存在する場合)を互いに電気的に分離するのに役立つ。したがって、SI110は、他のコンポーネント160及び任意選択の外部制御ユニット106(存在する場合)とは別個の電圧ドメイン内で動作することができる。SI110の電圧ドメインはSI電圧ドメインと呼ばれ、他のコンポーネント160の電圧ドメインはSoC電圧ドメインと呼ばれる。電力管理IC116は、車載処理システム102のコンポーネントに十分な電力を供給する1つ又は複数の集積回路として実装され得る。電力接続部118A~118Cの各々は、送電線、ワイヤ、電力トレースなどの導電性要素として実装され得る。 The power management IC 116 provides power to the other components of the vehicle processing system 102. For example, power rails or connections 118A-118C connect the power management IC 116 to the other components 160 of the vehicle SoC 104, the SI 110, and the optional external control unit 106, respectively. The power connections 118A-118C serve to electrically isolate the other components 160 of the vehicle SoC 104, the SI 110, and the optional external control unit 106 (if present), respectively. Thus, the SI 110 can operate in a voltage domain separate from the other components 160 and the optional external control unit 106 (if present). The voltage domain of the SI 110 is referred to as the SI voltage domain, and the voltage domain of the other components 160 is referred to as the SoC voltage domain. The power management IC 116 can be implemented as one or more integrated circuits that provide sufficient power to the components of the vehicle processing system 102. Each of the power connections 118A-118C may be implemented as a conductive element, such as a power line, wire, power trace, etc.
前述のように、SI110はSIクロック・ドメインとSI電圧ドメインとで動作する。SIクロック・ドメインとSI電圧ドメインとは合わせてSIドメインと呼ぶ。同様に、他のコンポーネント160はSoCクロック・ドメインとSoC電圧ドメインとで動作する。SoCクロック・ドメインとSoC電圧ドメインとは合わせてSoCドメインと呼ぶ。 As mentioned above, the SI 110 operates in the SI clock domain and the SI voltage domain. The SI clock domain and the SI voltage domain are collectively referred to as the SI domain. Similarly, the other components 160 operate in the SoC clock domain and the SoC voltage domain. The SoC clock domain and the SoC voltage domain are collectively referred to as the SoC domain.
車載SoC104の他のコンポーネント160には、メイン中央処理ユニット(CPU:Central Processing Unit)コンプレックス120、補助安全ユニット122、車載SoC機能を実行するための回路124、揮発性データ・ストレージ又はメモリ126(例えば、ダイナミック・ランダム・アクセス・メモリ(DRAM:Dynamic Random Access Memory))、及び不揮発性データ・ストレージ又はメモリ128が含まれ得る。メインCPUコンプレックス120は、ASIL-Bで動作する1つ又は複数のプロセッサとして実装され得る。このような実施例では、SI110はより高いレベルのASIL(例えば、ASIL-D)で動作し得るため、車載SoC104は、複数の又は混合されたASILで動作し得る。非限定的な例として、回路124は、1つ又は複数のディスプレイ、1つ又は複数の車載入出力(I/O:Input/Output)コントローラ、1つ又は複数のメモリ・コントローラ、1つ又は複数のインターコネクトなどを実装するハードウェアを含み得る。図示する実施例では、回路124は、複数の論理ブロックLB(1)~LB(N)を含む又は実装するものとして示されている。これらの論理ブロックの各々は知的財産(IP:Intellectual Property)としばしば呼ばれる。論理ブロックLB(1)~LB(N)は、自律車両(例えば、図12に示す自律車両1200)内に様々な機能を実装することができる。 Other components 160 of the automotive SoC 104 may include a main central processing unit (CPU) complex 120, an auxiliary safety unit 122, circuitry 124 for performing automotive SoC functions, volatile data storage or memory 126 (e.g., Dynamic Random Access Memory (DRAM)), and non-volatile data storage or memory 128. The main CPU complex 120 may be implemented as one or more processors operating at ASIL-B. In such an embodiment, the SI 110 may operate at a higher level of ASIL (e.g., ASIL-D), so that the automotive SoC 104 may operate at multiple or mixed ASILs. As non-limiting examples, the circuitry 124 may include hardware implementing one or more displays, one or more vehicle input/output (I/O) controllers, one or more memory controllers, one or more interconnects, etc. In the illustrated embodiment, the circuitry 124 is shown as including or implementing multiple logic blocks LB(1)-LB(N). Each of these logic blocks is often referred to as Intellectual Property (IP). The logic blocks LB(1)-LB(N) may implement various functions within an autonomous vehicle (e.g., autonomous vehicle 1200 shown in FIG. 12).
任意選択の外部制御ユニット106には、コントローラ130、障害アグリゲータ132、揮発性データ・ストレージ又はメモリ136(例えば、DRAM)、及び不揮発性データ・ストレージ又はメモリ138が含まれ得る。任意選択の外部制御ユニット106にはまた、任意選択の外部制御ユニット106によって実行される安全機能を実装する1つ又は複数の論理ブロック(図示せず)が含まれ得る。コントローラ130は、ASIL-Dで動作する1つ又は複数のプロセッサ(例えば、マイクロコントローラ)として実装され得る。コントローラ130は、不揮発性メモリ138に記憶されている1つ又は複数の車載オープン・システム・アーキテクチャ(AUTOSAR:Automotive Open System Architecture)ソフトウェア規格に準拠した命令などの命令を実行する。この命令は、障害アグリゲータ132が車載SoC104から障害を受信した場合に、コントローラ130に適切な措置を行うように指示し得る。 Optional external control unit 106 may include controller 130, fault aggregator 132, volatile data storage or memory 136 (e.g., DRAM), and non-volatile data storage or memory 138. Optional external control unit 106 may also include one or more logic blocks (not shown) that implement safety functions performed by optional external control unit 106. Controller 130 may be implemented as one or more processors (e.g., microcontrollers) operating in ASIL-D. Controller 130 executes instructions, such as instructions compliant with one or more Automotive Open System Architecture (AUTOSAR) software standards, stored in non-volatile memory 138. The instructions may direct controller 130 to take appropriate action if fault aggregator 132 receives a fault from vehicle SoC 104.
1つ又は複数の実施例では、SI110には、プロセッサ140、割り込みコントローラ141、SI障害アグリゲータ142、揮発性データ・ストレージ又はメモリ146(例えば、スタティック・ランダム・アクセス・メモリ(SRAM:Static Random-Access Memory))、及び1つ又は複数の論理ブロック148が含まれている。プロセッサ140は、高ランクのASIL-D安全プロセッサなど、プロセッサのクラスタとして実装され得る。プロセッサ140は、ブート時に不揮発性メモリ128から取得し、揮発性メモリ146に記憶されたAUTOSARソフトウェア規格に準拠した命令などの命令149を実行する。この命令149は、SI障害アグリゲータ142が車載SoC104の他のコンポーネント160から障害を受信した場合に、プロセッサ140に適切な措置を行うように指示し得る。論理ブロック148は、SI110によって実行される安全機能の実装に役立ち得る。 In one or more embodiments, the SI 110 includes a processor 140, an interrupt controller 141, an SI fault aggregator 142, a volatile data storage or memory 146 (e.g., a static random-access memory (SRAM)), and one or more logic blocks 148. The processor 140 may be implemented as a cluster of processors, such as a high-ranked ASIL-D safety processor. The processor 140 executes instructions 149, such as instructions conforming to the AUTOSAR software standard, retrieved at boot time from the non-volatile memory 128 and stored in the volatile memory 146. The instructions 149 may direct the processor 140 to take appropriate action if the SI fault aggregator 142 receives a fault from another component 160 of the vehicle SoC 104. The logic blocks 148 may aid in implementing safety features performed by the SI 110.
補助安全ユニット122は、リアルタイム安全補助処理ユニットとして実装され得る、及び/又はASIL-B以上のランクにされ得る。つまり、補助安全ユニット122は、SoCドメイン内の他のコンポーネントと同じリスク分類レベル又はより高いリスク分類レベルで動作し得る。補助安全ユニット122には、プロセッサ150、1つ又は複数のSoC障害アグリゲータ152、割り込みコントローラ154、及び、メールボックス156と呼ばれる1つ又は複数の論理ブロックが含まれている。SI障害アグリゲータ142及び障害アグリゲータ132(存在する場合)の各々は、SoC障害アグリゲータ152から障害を受信することができる。したがって、SoC障害アグリゲータ152は、1つ又は複数の障害インターフェース170を介して障害アグリゲータ132に接続でき、1つ又は複数の障害インターフェース172を介してSI障害アグリゲータ142に接続される。障害インターフェース170及び172の各々には、SoC障害アグリゲータ152の各々を障害アグリゲータ132又はSI障害アグリゲータ142のうちの対応する1つに物理的に接続するワイヤ、信号トレースなどの接続が含まれている。 The auxiliary safety unit 122 may be implemented as a real-time safety auxiliary processing unit and/or may be ranked ASIL-B or higher. That is, the auxiliary safety unit 122 may operate at the same risk classification level as other components in the SoC domain or at a higher risk classification level. The auxiliary safety unit 122 includes a processor 150, one or more SoC fault aggregators 152, an interrupt controller 154, and one or more logic blocks called mailboxes 156. Each of the SI fault aggregator 142 and the fault aggregator 132 (if present) may receive faults from the SoC fault aggregator 152. Thus, the SoC fault aggregator 152 may be connected to the fault aggregator 132 via one or more fault interfaces 170 and to the SI fault aggregator 142 via one or more fault interfaces 172. Each of the fault interfaces 170 and 172 includes connections, such as wires, signal traces, etc., that physically connect each of the SoC fault aggregators 152 to a corresponding one of the fault aggregators 132 or SI fault aggregators 142.
メールボックス156には、プロセッサ150が書き込み、プロセッサ140が読み取る第1のメールボックスと、プロセッサ140が書き込み、プロセッサ150が読み取る第2のメールボックスとが含まれ得る。メールボックス156は、プロセッサ150(例えば、ASIL-B以上のランクの中央処理ユニット(「CPU」))によって使用されて、メールボックス割り込みを割り込みコントローラ141に報告し、割り込みコントローラ141から割り込みを受信し得る。したがって、障害インターフェース172には、メールボックス156を割り込みコントローラ141に接続する信号導体が少なくとも1つ含まれている。各メールボックス割り込みには、エラーのシビアリティを示すシビアリティ識別子が含まれている。非限定的な例として、シビアリティ識別子は最小値(例えば、ゼロ)から最大値(例えば、7)までの数値であり得る。別の非限定的な例として、割り込みには、シビアリティを示すように先験的にエンコードされた割り込み番号があってもよい。プロセッサ140及び/又はプロセッサ150は、障害情報をメールボックス156に書き込むことができる。障害情報には、エラーが発生した論理ブロック名、論理ブロック診断識別子、障害の性質、シビアリティ識別子など、障害を発生させたエラーに関する情報が含まれる。 The mailbox 156 may include a first mailbox that the processor 150 writes to and the processor 140 reads from, and a second mailbox that the processor 140 writes to and the processor 150 reads from. The mailbox 156 may be used by the processor 150 (e.g., a central processing unit ("CPU") of rank ASIL-B or higher) to report mailbox interrupts to the interrupt controller 141 and to receive interrupts from the interrupt controller 141. Thus, the fault interface 172 includes at least one signal conductor connecting the mailbox 156 to the interrupt controller 141. Each mailbox interrupt includes a severity identifier that indicates the severity of the error. As a non-limiting example, the severity identifier may be a numeric value from a minimum value (e.g., zero) to a maximum value (e.g., seven). As another non-limiting example, the interrupt may have an interrupt number that is a priori encoded to indicate the severity. The processor 140 and/or the processor 150 may write fault information to the mailbox 156. The failure information includes information about the error that caused the failure, such as the name of the logical block where the error occurred, the logical block diagnosis identifier, the nature of the failure, and a severity identifier.
SI110を車載SoC104に統合すると、任意選択の外部制御ユニット106も省略した場合に、多数の別個のコンポーネント(例えば、揮発性メモリ136及び不揮発性メモリ138)を車載処理システム102から省略することが可能になり得る。それでもなお、SI110を車載SoC104の他のコンポーネント160(例えば、メインCPUコンプレックス120、補助安全ユニット122、回路124、揮発性メモリ126、及び不揮発性メモリ128)から分離して、他のコンポーネント160のうちの1つ又は複数に生じる可能性のある問題がSI110に悪影響を与えないようにすることが必要である。例えば、このような分離は、SI110が、車載SoC104の他のコンポーネント160のうちの1つ又は複数で発生する停止状態による影響を受けないようにするのに役立ち得る。他のコンポーネント160のうちの1つ又は複数で発生する可能性のある停止状態のタイプの非限定的な例には、ランダムな障害、クロックの問題、電力の問題、及び/又は電圧の問題がある。空間的近接性と、SI110が車載SoC104の他のコンポーネント160と共有する1つ又は複数のインターフェース200(図2を参照)とにより、このような停止状態はSI110に移行し、そのためにSI110が車載SoC104に統合されたフォールバック及び/又はフェイルセーフ機能を実行できなくする可能性がある。このため、車載処理システム102は、SI110を車載SoC104の他のコンポーネント160から絶縁して、車載SoC104と任意選択の外部制御ユニット106との間の分離に匹敵する分離を実現している。このような分離は、第1のクロック112及び第2のクロック114、第1の電力接続部118A及び第2の電力接続部118B、並びにインターフェース200によって実現することができる。 Integrating the SI 110 into the vehicle SoC 104 may allow a number of separate components (e.g., volatile memory 136 and non-volatile memory 138) to be omitted from the vehicle processing system 102 if the optional external control unit 106 is also omitted. Nevertheless, it is necessary to isolate the SI 110 from the other components 160 of the vehicle SoC 104 (e.g., the main CPU complex 120, the auxiliary safety unit 122, the circuitry 124, the volatile memory 126, and the non-volatile memory 128) so that problems that may occur in one or more of the other components 160 do not adversely affect the SI 110. For example, such isolation may help to ensure that the SI 110 is not affected by a stall condition that occurs in one or more of the other components 160 of the vehicle SoC 104. Non-limiting examples of the types of stall conditions that may occur in one or more of the other components 160 include random failures, clock problems, power problems, and/or voltage problems. Due to the spatial proximity and one or more interfaces 200 (see FIG. 2 ) that the SI 110 shares with other components 160 of the vehicle SoC 104, such a stall condition may be transferred to the SI 110, thereby preventing the SI 110 from executing fallback and/or fail-safe functions integrated into the vehicle SoC 104. The vehicle processing system 102 thus isolates the SI 110 from the other components 160 of the vehicle SoC 104, providing isolation comparable to that between the vehicle SoC 104 and the optional external control unit 106. Such isolation may be provided by the first and second clocks 112 and 114, the first and second power connections 118A and 118B, and the interfaces 200.
第1の(SoC)クロック112は、第2の(SI)クロック114(例えば、別個の基準水晶を含む)とは別個であり、これは、SI110を車載SoC104の他のコンポーネント160から分離するのに役立つ。同様に、第1の電力接続部118Aは、第2の電力接続部118Bとは別個であり、これは、SI110を車載SoC104の他のコンポーネント160から分離するのに役立つ。前述のように、SI110は、車載SoC104の他のコンポーネント160とは別個のSI電圧ドメインで動作し得る。しかし、別個の第2の(SI)クロック114と別個の第2の電力接続部118Bを使用しても、SI110はインターフェース200(図2を参照)を介して車載SoC104の他のコンポーネント160と通信する。 The first (SoC) clock 112 is separate from the second (SI) clock 114 (e.g., including a separate reference crystal), which helps to isolate the SI 110 from the other components 160 of the vehicle SoC 104. Similarly, the first power connection 118A is separate from the second power connection 118B, which helps to isolate the SI 110 from the other components 160 of the vehicle SoC 104. As mentioned above, the SI 110 may operate in a separate SI voltage domain from the other components 160 of the vehicle SoC 104. However, even with the separate second (SI) clock 114 and the separate second power connection 118B, the SI 110 still communicates with the other components 160 of the vehicle SoC 104 via an interface 200 (see FIG. 2).
論理ブロック148には、専用の第2の(SI)クロック114に接続されたクロック及びリセット回路230(図2を参照)が含まれている。専用の第2の(SI)クロック114は、クロック及びリセット回路230の基準クロックとして使用され得る。例えば、クロック及びリセット回路230には、SI110の他の機能クロック及びデバッグ・クロックを派生させるために使用される内部専用位相ロック・ループ(PLL:Phased-Locked Loop)が含まれている場合がある。非限定的な例として、クロック及びリセット回路230は、PLLから派生され得るデバッグ・クロック信号及びテスト・クロック信号を提供することができる。クロック及びリセット回路230は、SI110内で使用されるすべてのクロック及びリセット信号を生成することができる。つまり、クロック及びリセット回路230は、SIドメイン内で使用されるクロック信号及びリセットを生成することができる。加えて又は或いは、第2の(SI)クロック114は、論理ブロック148のうちの1つ又は複数の機能クロックとして直接使用することもできる。このようにして、SI110はローカルで生成されたクロック信号及びリセット、並びに/又は第2の(SI)クロック114によって提供されるクロック信号を使用する。SI110では、他のコンポーネント160からのクロック信号又はリセットは使用されない。クロック及びリセット回路230は、他のコンポーネント160内のリセットを生成する論理(例えば、リセット・ブロック)からの摂動がSI110のコンポーネントに到達しないことを確実にするのに役立つ。 The logic block 148 includes a clock and reset circuit 230 (see FIG. 2) connected to a dedicated second (SI) clock 114. The dedicated second (SI) clock 114 may be used as a reference clock for the clock and reset circuit 230. For example, the clock and reset circuit 230 may include an internal dedicated phase-locked loop (PLL) used to derive other functional and debug clocks for the SI 110. As a non-limiting example, the clock and reset circuit 230 may provide debug and test clock signals that may be derived from the PLL. The clock and reset circuit 230 may generate all clock and reset signals used within the SI 110. That is, the clock and reset circuit 230 may generate clock signals and resets used within the SI domain. Additionally or alternatively, the second (SI) clock 114 may be used directly as one or more functional clocks of the logic block 148. In this manner, SI 110 uses locally generated clock signals and resets and/or clock signals provided by the second (SI) clock 114. SI 110 does not use clock signals or resets from other components 160. Clock and reset circuit 230 helps ensure that perturbations from logic generating resets (e.g., reset blocks) in other components 160 do not reach the components of SI 110.
図2は、少なくとも1つの実施例による、SI110を車載SoC104の他のコンポーネント160に接続するインターフェース200の図である。図2を参照すると、インターフェース200は、車載SoC104内のSI110の回路と論理の論理的分離を提供する。図示する実施例では、インターフェース200には、障害インターフェース172、揮発性メモリ・インターフェース200A、第1の制御バックボーン・インターフェース200B、第2の制御バックボーン・インターフェース200C、セキュア・コンテンツ・インターフェース200D、デバッグ・インターフェース200E、及びテスト・インターフェース200Fが含まれている。障害インターフェース172は、SoC障害アグリゲータ152から論理的に分離されていなくてもよいが、各障害インターフェースは1つ又は複数の電圧レベル・シフタ240を通過するか又はそれらを含んでいてもよい。各電圧レベル・シフタ240はSI電圧ドメインとSoC電圧ドメインとの間の電気的分離を提供する。電圧レベル・シフタ240の各々は、電気的分離を提供するが、電圧レベル・シフタ240は、割り込みストーム、障害ストーム、及び/又は連続アサートなど、いくつかのタイプの故障に対して適切な分離を提供しない場合がある。SI障害アグリゲータ142には、障害インターフェース172経由で障害情報を受信し、プロセッサ140によって実行される命令149にそのような故障の通知を提供する1つ又は複数のステータス・ビット242が含まれている場合がある。図示する実施例では、ステータス・ビット242には、ステータス・ビット「BT1」、「BT2」、及び「BT3」(図4を参照)が含まれている。命令149は、プロセッサ140にこの通知を使用して、障害インターフェース172で発生する停止状態を緩和するように指示する。 2 is a diagram of an interface 200 connecting the SI 110 to other components 160 of the automotive SoC 104, according to at least one embodiment. Referring to FIG. 2, the interface 200 provides logical separation of the circuitry and logic of the SI 110 within the automotive SoC 104. In the illustrated embodiment, the interface 200 includes a fault interface 172, a volatile memory interface 200A, a first control backbone interface 200B, a second control backbone interface 200C, a secure content interface 200D, a debug interface 200E, and a test interface 200F. The fault interface 172 may not be logically separate from the SoC fault aggregator 152, but each fault interface may pass through or include one or more voltage level shifters 240. Each voltage level shifter 240 provides electrical separation between the SI voltage domain and the SoC voltage domain. Although each of the voltage level shifters 240 provides electrical isolation, the voltage level shifters 240 may not provide adequate isolation for some types of faults, such as interrupt storms, fault storms, and/or continuous assertions. The SI fault aggregator 142 may include one or more status bits 242 that receive fault information via the fault interface 172 and provide notification of such faults to the instructions 149 executed by the processor 140. In the illustrated embodiment, the status bits 242 include status bits "BT1", "BT2", and "BT3" (see FIG. 4). The instructions 149 instruct the processor 140 to use the notification to mitigate a stall condition that occurs at the fault interface 172.
揮発性メモリ・インターフェース200Aは、プロセッサ140と車載SoC104の揮発性メモリ126との間のインターフェースである。揮発性メモリ・インターフェース200Aにより、プロセッサ140は揮発性メモリ126に情報を書き込み、揮発性メモリ126から情報を読み取ることができる。揮発性メモリ・インターフェース200Aには、ワイヤ、信号トレースなど、揮発性メモリ126との1つ又は複数の接続が含まれている。揮発性メモリ・インターフェース200Aには、論理的分離制御部220、アクセス・タイマ222、及びドメイン同期回路224が含まれ得る。論理的分離制御部220には、プロセッサ140によって選択的にロック及びロック解除できるゲート又はロック機構が含まれている。アクセス・タイマ222により、プロセッサ140によって開始されたアクセス試行がタイムアウトできる。 The volatile memory interface 200A is an interface between the processor 140 and the volatile memory 126 of the vehicle SoC 104. The volatile memory interface 200A allows the processor 140 to write information to and read information from the volatile memory 126. The volatile memory interface 200A includes one or more connections to the volatile memory 126, such as wires, signal traces, etc. The volatile memory interface 200A may include a logical isolation control 220, an access timer 222, and a domain synchronization circuit 224. The logical isolation control 220 includes a gate or locking mechanism that can be selectively locked and unlocked by the processor 140. The access timer 222 allows access attempts initiated by the processor 140 to time out.
ドメイン同期回路224には、位相同期回路と電圧レベル・シフタとが含まれている。位相同期回路は、別個の第1のクロック112及び第2のクロック114(図1を参照)を使用して生成されたSIドメイン及びSoCドメインにわたって通信される信号の位相を同期するのに役立つ。クロック及びリセット回路230によって生成されたリセットは、位相同期回路など、SI及びSoC電圧及びクロック・ドメインを横断する任意の要素によって使用され得る。位相同期回路には、各々、別個の合成トップ(synthesis top)として機能し得るSoC部分とSI部分とがある。SoC部分は物理的にSoCドメインに存在し、SI部分は物理的にSIドメインに存在する。SI部分とSoC部分の両方の論理は、クロック及びリセット回路230によって生成されたリセットを使用する。したがって、SI110によって生成されるリセットは、SI110よりも低いASILで動作し得る車載SoC104の論理によって使用され得るが、車載SoC104によって生成されるリセットは、SI110に伝達されず、SI110によって使用され得ない。非限定的な例として、位相同期回路は、スプリット・ファースト・イン・ファースト・アウト(FIFO:First-In-First-Out)などとして実装され得る。ドメイン同期回路224の電圧レベル・シフタは、電圧レベル・シフタ240と実質的に同一であり、SI及びSoC電圧ドメインを介して送信される信号の電圧を調整して、信号がSI及びSoCドメインを介して安全に通信できるようにすることができる。アクセス・タイマ222がプロセッサ140によるアクセスがタイムアウトしたことを示す場合、要求はドメイン同期回路224から削除され得る(例えば、スプリットFIFOからポップされる)。 The domain synchronization circuit 224 includes a phase-locked loop and a voltage level shifter. The phase-locked loop serves to synchronize the phase of signals communicated across the SI and SoC domains generated using separate first and second clocks 112 and 114 (see FIG. 1). The reset generated by the clock and reset circuit 230 can be used by any element that crosses the SI and SoC voltage and clock domains, such as the phase-locked loop. The phase-locked loop has a SoC portion and an SI portion, each of which can function as a separate synthesis top. The SoC portion physically resides in the SoC domain, and the SI portion physically resides in the SI domain. Logic in both the SI and SoC portions uses the reset generated by the clock and reset circuit 230. Thus, a reset generated by the SI 110 may be used by logic on the vehicle SoC 104, which may operate at a lower ASIL than the SI 110, but a reset generated by the vehicle SoC 104 is not communicated to the SI 110 and cannot be used by the SI 110. As a non-limiting example, the phase-locked loop may be implemented as a split first-in-first-out (FIFO), or the like. The voltage level shifter of the domain synchronization circuit 224 is substantially identical to the voltage level shifter 240 and may adjust the voltage of signals transmitted through the SI and SoC voltage domains to allow the signals to communicate safely through the SI and SoC domains. If the access timer 222 indicates that an access by the processor 140 has timed out, the request may be removed from the domain synchronization circuit 224 (e.g., popped from the split FIFO).
揮発性メモリ・インターフェース200Aがロック解除されると、プロセッサ140は揮発性メモリ126にアクセスすることができ、揮発性メモリ126は、アクセス・タイマ222を開始する。アクセス・タイマ222が第1の所定の時間を超えて経過していて、揮発性メモリ126からの応答が受信されていないことを示す場合、プロセッサ140は、安全障害を示し、論理的分離制御部220を使用して揮発性メモリ・インターフェース200Aをロックする。任意選択で、ロック解除されているインターフェース200のいずれかをロックし、また、任意選択で、車載プラットフォーム100(図1を参照)を安全な状態に戻すように構成されている1つ又は複数の措置を行う。一方、アクセス・タイマ222が第1の所定の時間が経過したことを示す前に応答が受信される場合、アクセス・タイマ222は自身をリセットし、プロセッサ140はアクセスを完了し、また、プロセッサ140はアクセスが完了した後に、揮発性メモリ・インターフェース200Aをロックする。したがって、揮発性メモリ・インターフェース200Aは、プロセッサ140が揮発性メモリ126にアクセスしていない場合は常にロックされたままになる。これは、揮発性メモリ126からSI110に移動する障害及び/又は停止状態からSI110を保護するのに役立つ。 When the volatile memory interface 200A is unlocked, the processor 140 can access the volatile memory 126, which starts the access timer 222. If the access timer 222 indicates that more than a first predetermined time has elapsed and no response has been received from the volatile memory 126, the processor 140 indicates a safety fault and uses the logical isolation control unit 220 to lock the volatile memory interface 200A. Optionally, it locks any of the unlocked interfaces 200, and optionally takes one or more actions configured to return the vehicle platform 100 (see FIG. 1) to a safe state. On the other hand, if a response is received before the access timer 222 indicates that the first predetermined time has elapsed, the access timer 222 resets itself, the processor 140 completes the access, and the processor 140 locks the volatile memory interface 200A after the access is completed. Thus, the volatile memory interface 200A remains locked whenever the processor 140 is not accessing the volatile memory 126. This helps protect the SI 110 from faults and/or outages migrating from the volatile memory 126 to the SI 110.
第1の制御バックボーン・インターフェース200B及び第2の制御バックボーン・インターフェース200Cは、プロセッサ140と制御バックボーン210との間のインターフェースである。制御バックボーン210は、バスなどとして実装され得る。第1の制御バックボーン・インターフェース200Bは、プロセッサ140から制御バックボーン210への通信用で、第2の制御バックボーン・インターフェース200Cは、制御バックボーン210からプロセッサ140への通信用である。非限定的な例として、プロセッサ140は制御バックボーン210を介して、車載SoC104の他のコンポーネント160の少なくとも一部(例えば、回路124、メールボックス156、及び不揮発性メモリ128)にアクセスできる。 The first control backbone interface 200B and the second control backbone interface 200C are interfaces between the processor 140 and the control backbone 210. The control backbone 210 may be implemented as a bus or the like. The first control backbone interface 200B is for communication from the processor 140 to the control backbone 210, and the second control backbone interface 200C is for communication from the control backbone 210 to the processor 140. As a non-limiting example, the processor 140 can access at least some of the other components 160 of the vehicle SoC 104 (e.g., the circuit 124, the mailbox 156, and the non-volatile memory 128) via the control backbone 210.
第1の制御バックボーン・インターフェース200Bにより、プロセッサ140は制御バックボーン210に命令及び/又は情報を送信できる。第1の制御バックボーン・インターフェース200Bには、論理的分離制御部220、アクセス・タイマ222、ドメイン同期回路224、及びファイアウォール226が含まれ得る。第1の制御バックボーン・インターフェース200Bの論理的分離制御部220は、揮発性メモリ・インターフェース200Aの論理的分離制御部220と実質的に同一であり、また、実質的に同一に機能する。したがって、第1の制御バックボーン・インターフェース200Bの論理的分離制御部220により、プロセッサ140は第1の制御バックボーン・インターフェース200Bをロックしたり、ロック解除したりできる。第1の制御バックボーン・インターフェース200Bのアクセス・タイマ222により、プロセッサ140によって開始されたアクセス試行がタイムアウトできる。第1の制御バックボーン・インターフェース200Bのドメイン同期回路224は、揮発性メモリ・インターフェース200Aのドメイン同期回路224と実質的に同一であり、また、実質的に同一に機能する。第1の制御バックボーン・インターフェース200Bのファイアウォール226は、1つ又は複数のセキュリティ・ルールを実装し、該セキュリティ・ルールに基づいて各通信を許可したりブロックしたりする。 The first control backbone interface 200B allows the processor 140 to send commands and/or information to the control backbone 210. The first control backbone interface 200B may include a logical isolation control 220, an access timer 222, a domain synchronization circuit 224, and a firewall 226. The logical isolation control 220 of the first control backbone interface 200B is substantially identical to and functions substantially identically to the logical isolation control 220 of the volatile memory interface 200A. Thus, the logical isolation control 220 of the first control backbone interface 200B allows the processor 140 to lock and unlock the first control backbone interface 200B. The access timer 222 of the first control backbone interface 200B allows access attempts initiated by the processor 140 to time out. The domain synchronization circuit 224 of the first control backbone interface 200B is substantially identical to and functions substantially identically to the domain synchronization circuit 224 of the volatile memory interface 200A. The firewall 226 of the first control backbone interface 200B implements one or more security rules and allows or blocks each communication based on the security rules.
第2の制御バックボーン・インターフェース200Cにより、プロセッサ140は制御バックボーン210から命令及び/又は情報を受信できる。第2の制御バックボーン・インターフェース200Cには、論理的分離制御部220、ドメイン同期回路224、及びファイアウォール226が含まれ得る。第2の制御バックボーン・インターフェース200Cの論理的分離制御部220は、揮発性メモリ・インターフェース200Aの論理的分離制御部220と実質的に同一であり、また、実質的に同一に機能する。したがって、第2の制御バックボーン・インターフェース200Cの論理的分離制御部220により、プロセッサ140は第2の制御バックボーン・インターフェース200Cをロックしたり、ロック解除したりできる。第2の制御バックボーン・インターフェース200Cのドメイン同期回路224は、揮発性メモリ・インターフェース200Aのドメイン同期回路224と実質的に同一であり、また、実質的に同一に機能する。第2の制御バックボーン・インターフェース200Cのファイアウォール226は、1つ又は複数のセキュリティ・ルールを実装し、該セキュリティ・ルールに基づいて各通信を許可したり、ブロックしたりする。 The second control backbone interface 200C allows the processor 140 to receive instructions and/or information from the control backbone 210. The second control backbone interface 200C may include a logical isolation control unit 220, a domain synchronization circuit 224, and a firewall 226. The logical isolation control unit 220 of the second control backbone interface 200C is substantially identical to and functions substantially identically to the logical isolation control unit 220 of the volatile memory interface 200A. Thus, the logical isolation control unit 220 of the second control backbone interface 200C allows the processor 140 to lock and unlock the second control backbone interface 200C. The domain synchronization circuit 224 of the second control backbone interface 200C is substantially identical to and functions substantially identically to the domain synchronization circuit 224 of the volatile memory interface 200A. The firewall 226 of the second control backbone interface 200C implements one or more security rules and allows or blocks each communication based on the security rules.
セキュア・コンテンツ・インターフェース200Dは、プロセッサ140とセキュア・コンテンツ回路212との間のインターフェースである。セキュア・コンテンツ・インターフェース200Dにより、プロセッサ140は、セキュア・コンテンツ回路212から命令及び/又は情報(例えば、セキュアなコンテンツ及び/又は機密コンテンツ)を受信できる。セキュア・コンテンツ・インターフェース200Dには、論理的分離制御部220及びドメイン同期回路224が含まれ得る。セキュア・コンテンツ・インターフェース200Dの論理的分離制御部220は、揮発性メモリ・インターフェース200Aの論理的分離制御部220と実質的に同一であり、また、実質的に同一に機能する。したがって、セキュア・コンテンツ・インターフェース200Dの論理的分離制御部220により、プロセッサ140はセキュア・コンテンツ・インターフェース200Dをロックしたり、ロック解除したりできる。セキュア・コンテンツ・インターフェース200Dのドメイン同期回路224は、揮発性メモリ・インターフェース200Aのドメイン同期回路224と実質的に同一であり、また、実質的に同一に機能する。 The secure content interface 200D is an interface between the processor 140 and the secure content circuit 212. The secure content interface 200D allows the processor 140 to receive instructions and/or information (e.g., secure and/or confidential content) from the secure content circuit 212. The secure content interface 200D may include a logical isolation control 220 and a domain synchronization circuit 224. The logical isolation control 220 of the secure content interface 200D is substantially identical to and functions substantially identically to the logical isolation control 220 of the volatile memory interface 200A. Thus, the logical isolation control 220 of the secure content interface 200D allows the processor 140 to lock and unlock the secure content interface 200D. The domain synchronization circuit 224 of the secure content interface 200D is substantially identical to the domain synchronization circuit 224 of the volatile memory interface 200A and functions substantially identically.
デバッグ・インターフェース200Eは、プロセッサ140とデバッグ回路214との間のインターフェースである。デバッグ・インターフェース200Eにより、プロセッサ140はデバッグ回路214から命令及び/又は情報を受信できる。デバッグ・インターフェース200Eには、論理的分離制御部220及びドメイン同期回路224が含まれ得る。デバッグ・インターフェース200Eの論理的分離制御部220は、揮発性メモリ・インターフェース200Aの論理的分離制御部220と実質的に同一であり、また、実質的に同一に機能する。したがって、デバッグ・インターフェース200Eの論理的分離制御部220により、プロセッサ140はデバッグ・インターフェース200Eをロックしたり、ロック解除したりできる。デバッグ・インターフェース200Eのドメイン同期回路224は、揮発性メモリ・インターフェース200Aのドメイン同期回路224と実質的に同一で、機能する。前述したように、SI110及び他のコンポーネント160は、別個のクロック・ドメインで動作する。1つ又は複数の実施例では、デバッグ回路214など、車載SoC104の他のコンポーネント160のうちの1つ又は複数の外部クロックからの信号はSI110に供給されない。車載SoC104によって実行されるデバッグ機能は、デバッグ・インターフェース200Eのドメイン同期回路224を介してデバッグ・クロック信号を受信する。この信号は、車載SoC104によって実行されるデバッグ機能を、SI110によって生成されたデバッグ・クロック信号及び/又は第2の(SI)クロック114を使用することに切り替えるか又は変換する。SI110がミッション・モードになっている間(例えば、車両が走行中)は、デバッグ論理は使用されないため、SI110はデバッグ・クロックに第1のクロック・ゲートを含んで、デバッグ・クロック信号によって生じる可能性がある干渉を防止する。非限定的な例として、第1のクロック・ゲートはクロック及びリセット回路230のコンポーネントであり得る。第1のクロック・ゲートは、プロセッサ140によって設定された第1の構成ビットを使用して制御できる(例えば、選択的にオンオフが切り替えられる)。 The debug interface 200E is an interface between the processor 140 and the debug circuit 214. The debug interface 200E allows the processor 140 to receive instructions and/or information from the debug circuit 214. The debug interface 200E may include a logical isolation control unit 220 and a domain synchronization circuit 224. The logical isolation control unit 220 of the debug interface 200E is substantially identical to and functions substantially identically to the logical isolation control unit 220 of the volatile memory interface 200A. Thus, the logical isolation control unit 220 of the debug interface 200E allows the processor 140 to lock and unlock the debug interface 200E. The domain synchronization circuit 224 of the debug interface 200E is substantially identical to and functions identically to the domain synchronization circuit 224 of the volatile memory interface 200A. As previously described, the SI 110 and the other components 160 operate in separate clock domains. In one or more embodiments, the SI 110 is not provided with a signal from one or more external clocks of other components 160 of the vehicle SoC 104, such as the debug circuit 214. The debug functions performed by the vehicle SoC 104 receive a debug clock signal via the domain synchronization circuit 224 of the debug interface 200E. This signal switches or converts the debug functions performed by the vehicle SoC 104 to using the debug clock signal generated by the SI 110 and/or the second (SI) clock 114. While the SI 110 is in mission mode (e.g., while the vehicle is moving), the debug logic is not used, so the SI 110 includes a first clock gate on the debug clock to prevent possible interference caused by the debug clock signal. As a non-limiting example, the first clock gate can be a component of the clock and reset circuit 230. The first clock gate can be controlled (e.g., selectively switched on and off) using a first configuration bit set by the processor 140.
テスト・インターフェース200Fは、プロセッサ140とテスト回路216との間のインターフェースである。テスト・インターフェース200Fにより、プロセッサ140はテスト回路216から命令及び/又は情報を受信できる。テスト・インターフェース200Fには、論理的分離制御部220及びドメイン同期回路224が含まれ得る。テスト・インターフェース200Fの論理的分離制御部220は、揮発性メモリ・インターフェース200Aの論理的分離制御部220と実質的に同一であり、また、実質的に同一に機能する。したがって、テスト・インターフェース200Fの論理的分離制御部220により、プロセッサ140はテスト・インターフェース200Fをロックしたり、ロック解除したりできる。テスト・インターフェース200Fのドメイン同期回路224は、揮発性メモリ・インターフェース200Aのドメイン同期回路224と実質的に同一であり、また、実質的に同一に機能する。前述のように、テスト回路216など、車載SoC104の他のコンポーネント160のうちの1つ又は複数からの外部信号は、この構成によってSI110に供給されることが防止される。車載SoC104によって実行されるテスト機能は、デバッグ・インターフェース200Eのドメイン同期回路224を介してテスト・クロック信号を受信する。この信号は、車載SoC104によって実行されるテスト機能を、SI110によって生成されたテスト・クロック信号及び/又は第2の(SI)クロック114を使用することに切り替えるか又は変換する。SI110がミッション・モードになっている間(例えば、車両が走行中)は、テスト論理は使用されないため、SI110はテスト・クロックに第2のクロック・ゲートを含んで、テスト・クロック信号によって生じる可能性のある干渉を防止する。非限定的な例として、第2のクロック・ゲートはクロック及びリセット回路230のコンポーネントであり得る。第2のクロック・ゲートは、プロセッサ140によって設定された第2の構成ビットを使用して制御できる(例えば、選択的にオンオフが切り替えられる)。 The test interface 200F is an interface between the processor 140 and the test circuit 216. The test interface 200F allows the processor 140 to receive instructions and/or information from the test circuit 216. The test interface 200F may include a logical isolation control unit 220 and a domain synchronization circuit 224. The logical isolation control unit 220 of the test interface 200F is substantially identical to and functions substantially identically to the logical isolation control unit 220 of the volatile memory interface 200A. Thus, the logical isolation control unit 220 of the test interface 200F allows the processor 140 to lock and unlock the test interface 200F. The domain synchronization circuit 224 of the test interface 200F is substantially identical to and functions substantially identically to the domain synchronization circuit 224 of the volatile memory interface 200A. As previously mentioned, external signals from one or more of the other components 160 of the vehicle SoC 104, such as the test circuitry 216, are prevented by this configuration from being provided to the SI 110. The test functions performed by the vehicle SoC 104 receive a test clock signal via the domain synchronization circuitry 224 of the debug interface 200E. This signal switches or converts the test functions performed by the vehicle SoC 104 to using the test clock signal generated by the SI 110 and/or the second (SI) clock 114. While the SI 110 is in mission mode (e.g., while the vehicle is moving), the test logic is not used, so the SI 110 includes a second clock gate on the test clock to prevent possible interference caused by the test clock signal. As a non-limiting example, the second clock gate can be a component of the clock and reset circuitry 230. The second clock gate can be controlled (e.g., selectively turned on and off) using a second configuration bit set by the processor 140.
SI110には、分離又はコクーン・モードと非分離モードとの少なくとも2つの動作モードがある。SI110がコクーン・モードで動作している場合、SI110に入ることが許可される車載SoC104からの唯一の情報は障害情報であり、この情報は、障害インターフェース172を介してSI110に入る。このようにして、SI障害アグリゲータ142は、車載SoC104及びSI110の累積的な正常性状態を維持する。一方、SI110が非分離モードで動作している場合、情報はインターフェース200のうちの1つ又は複数を介してSI110に入ることができる。SI110がコクーン・モードで動作しているか、非分離モードで動作しているかは、プロセッサ140で実行される命令149によって少なくとも部分的に、且つインターフェース200によって少なくとも部分的に判定される。 SI 110 has at least two operating modes: isolated or cocoon mode and non-isolated mode. When SI 110 is operating in cocoon mode, the only information from the vehicle SoC 104 that is allowed to enter SI 110 is fault information, which enters SI 110 via fault interface 172. In this manner, SI fault aggregator 142 maintains a cumulative health state of the vehicle SoC 104 and SI 110. On the other hand, when SI 110 is operating in non-isolated mode, information can enter SI 110 via one or more of interfaces 200. Whether SI 110 is operating in cocoon mode or non-isolated mode is determined at least in part by instructions 149 executed by processor 140 and at least in part by interface 200.
車載SoC104の他のコンポーネント160で発生する可能性のある安全に関する重要な問題がインターフェース200のうちの1つ又は複数を介してSI110に到達することを防止するのに役立つように、インターフェース200の各々には、プロセッサ140によって選択的にロックされたり、ロック解除されたりする別個の論理的分離制御部220が含まれている。論理的分離制御部220のロック機構がプロセッサ140によってロックされている場合、ロック機構は、ロックされたインターフェースを介して車載SoC104とSI110との間のすべての通信を防止する。一方、インターフェースはプロセッサ140によってロック解除されて、ロック解除されたインターフェースを介してそのような通信を可能にし得る。したがって、プロセッサ140は選択的にSI110をコクーン・モード又は非分離モードにすることができる。すべてのインターフェース200がロックされている場合は常に、プロセッサ140は揮発性メモリ126又は不揮発性メモリ128のいずれにもアクセスできず、SI110内に存在する揮発性メモリ146(例えば、SRAM)に記憶されている命令149を実行する。 To help prevent potential safety-critical issues occurring in other components 160 of the vehicle SoC 104 from reaching the SI 110 through one or more of the interfaces 200, each of the interfaces 200 includes a separate logical isolation control 220 that can be selectively locked or unlocked by the processor 140. When the locking mechanism of the logical isolation control 220 is locked by the processor 140, the locking mechanism prevents all communication between the vehicle SoC 104 and the SI 110 through the locked interface. On the other hand, the interface can be unlocked by the processor 140 to allow such communication through the unlocked interface. Thus, the processor 140 can selectively put the SI 110 into a cocoon mode or a non-isolated mode. Whenever all the interfaces 200 are locked, the processor 140 cannot access either the volatile memory 126 or the non-volatile memory 128, and executes instructions 149 stored in the volatile memory 146 (e.g., SRAM) present in the SI 110.
ここで、図3を参照すると、本明細書に説明される方法300の各ブロックには、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組み合わせを使用して実行され得るコンピューティング・プロセスが含まれる。例えば、様々な機能は、メモリ(例えば、図1、図2、及び図4に示す揮発性メモリ146)に記憶された命令(例えば、図1、図2、及び図4に示す命令149)をプロセッサ(例えば、図1、図2、及び図4に示すプロセッサ140)が実行することによって実行され得る。方法300はまた、コンピュータ記憶媒体に記憶されたコンピュータ使用可能命令としても具体化され得る。方法300は、いくつか例を挙げると、スタンドアロン・アプリケーション、サービス又はホスト・サービス(スタンドアロン又は別のホスト・サービスとの組み合わせ)、又は別の製品へのプラグ・インによって提供され得る。また、方法300は、例として、図1の車載プラットフォーム100に関して説明される。しかしながら、方法300は、加えて又は或いは、任意の1つのシステム、又は本明細書で説明されているものを含むが、これらに限定されないシステムの任意の組み合わせによって実行され得る。 3, each block of the method 300 described herein includes a computing process that may be performed using any combination of hardware, firmware, and/or software. For example, various functions may be performed by a processor (e.g., processor 140 shown in FIG. 1, FIG. 2, and FIG. 4) executing instructions (e.g., instructions 149 shown in FIG. 1, FIG. 2, and FIG. 4) stored in a memory (e.g., volatile memory 146 shown in FIG. 1, FIG. 2, and FIG. 4). The method 300 may also be embodied as computer usable instructions stored on a computer storage medium. The method 300 may be provided by a standalone application, a service or a host service (standalone or in combination with another host service), or a plug-in to another product, to name a few. Also, the method 300 is described with respect to the vehicle platform 100 of FIG. 1 as an example. However, the method 300 may additionally or alternatively be performed by any one system or any combination of systems, including but not limited to those described herein.
図3は、本開示のいくつかの実施例による、SI110をコクーン・モードと非分離モードとの間で遷移させる方法300を示すフロー図である。説明を容易にするために、方法300はプロセッサ140(図1、図2、及び図4を参照)によって実行されているものとして説明する。図3を参照すると、第1のブロック302において、プロセッサ140は、車載SoC104の他のコンポーネント160(図1及び図2を参照)のうちの1つと通信する必要があると判定する。例えば、この通信は揮発性メモリ・インターフェース200A又は第1の制御バックボーン・インターフェース200Bを介して行われ得る。これらのインターフェースの各々により、SI110が車載SoC104の他のコンポーネント160との通信を開始できる。或いは、この通信は、第2の制御バックボーン・インターフェース200C、セキュア・コンテンツ・インターフェース200D、デバッグ・インターフェース200E、又はテスト・インターフェース200Fを介して行われてもよい。これらのインターフェースの各々により、SI110が車載SoC104の他のコンポーネント160によって開始された通信を受信できる。前述のように、SI110がコクーン・モードか非分離モードかに関係なく、通信は障害インターフェース172(図2を参照)を介して行われる。 FIG. 3 is a flow diagram illustrating a method 300 for transitioning the SI 110 between the cocoon mode and the non-isolated mode, according to some embodiments of the present disclosure. For ease of explanation, the method 300 is described as being performed by the processor 140 (see FIGS. 1, 2, and 4). Referring to FIG. 3, in a first block 302, the processor 140 determines that it is necessary to communicate with one of the other components 160 (see FIGS. 1 and 2) of the vehicle SoC 104. For example, this communication may occur via the volatile memory interface 200A or the first control backbone interface 200B. Each of these interfaces allows the SI 110 to initiate communication with the other components 160 of the vehicle SoC 104. Alternatively, this communication may occur via the second control backbone interface 200C, the secure content interface 200D, the debug interface 200E, or the test interface 200F. Each of these interfaces allows the SI 110 to receive communications initiated by other components 160 of the vehicle SoC 104. As mentioned above, regardless of whether the SI 110 is in cocoon mode or non-isolated mode, communications occur through the fault interface 172 (see FIG. 2).
プロセッサ140が車載SoC104の他のコンポーネント160のうちの特定の1つと通信する必要がある場合は常に、プロセッサ140は、通信を試みる前に該特定のコンポーネントとの通信が安全であると判断する。この判断を行うために、ブロック304では、プロセッサ140はSI障害アグリゲータ142の内容をチェックすることができる。このSI障害アグリゲータ142は、SI110の外部にあるSoC障害アグリゲータ152から、障害インターフェース172(図2を参照)を介して障害情報を受信する。前述のように、障害インターフェース172は、SoC障害アグリゲータ152から論理的に分離されていないが、各障害インターフェースは、SI電圧ドメインとSoC電圧ドメインとの間の電気的分離を提供する電圧レベル・シフタ240を通過するか又はそれらを含んでいてもよい。 Whenever the processor 140 needs to communicate with a particular one of the other components 160 of the vehicle SoC 104, the processor 140 determines that it is safe to communicate with that particular component before attempting communication. To make this determination, in block 304, the processor 140 may check the contents of the SI fault aggregator 142, which receives fault information from the SoC fault aggregator 152, which is external to the SI 110, via a fault interface 172 (see FIG. 2). As mentioned above, the fault interface 172 is not logically separate from the SoC fault aggregator 152, but each fault interface may pass through or include a voltage level shifter 240 that provides electrical isolation between the SI voltage domain and the SoC voltage domain.
判断ブロック306では、プロセッサ140はSI障害アグリゲータ142で障害が検出されたかどうかを判定する。少なくとも1つの障害が検出される場合、つまり、他のコンポーネント160のうちの1つ又は複数について識別された障害が、SoC障害アグリゲータ152によってSI障害アグリゲータ142に報告される場合、判断ブロック306の判断は「はい」である。プロセッサ140は、SI障害アグリゲータ142内のステータス・ビット242を使用して障害を検出し得る。ステータス・ビット242は、車載SoC104の正常性を追跡することを特徴とする場合がある。或いは、SI障害アグリゲータ142はプロセッサ140に割り込みを送信することによって、プロセッサ140に障害を通知してもよい。それ以外の場合、障害が検出されないと、判断ブロック306の判断は「いいえ」である。 In decision block 306, the processor 140 determines whether a fault is detected in the SI fault aggregator 142. If at least one fault is detected, i.e., if a fault identified for one or more of the other components 160 is reported by the SoC fault aggregator 152 to the SI fault aggregator 142, the determination in decision block 306 is "yes". The processor 140 may detect the fault using a status bit 242 in the SI fault aggregator 142. The status bit 242 may be characterized to track the health of the vehicle SoC 104. Alternatively, the SI fault aggregator 142 may notify the processor 140 of the fault by sending an interrupt to the processor 140. Otherwise, if no fault is detected, the determination in decision block 306 is "no".
判断ブロック306の判断が「はい」の場合、ブロック308では、プロセッサ140は1つ又は複数の訂正措置を行うことができる。訂正措置は、車両を安全な状態にするのに役立ち得る。非限定的な例として、このような訂正措置には、車両のブレーキをかけること、車両の減速、路肩への車両の経路指定などが含まれ得る。その後、プロセッサ140はブロック304に戻ってもよい。 If the determination at decision block 306 is "yes," then at block 308, the processor 140 may take one or more corrective actions. The corrective actions may serve to place the vehicle in a safe condition. By way of non-limiting example, such corrective actions may include braking the vehicle, slowing the vehicle, routing the vehicle to a shoulder, etc. The processor 140 may then return to block 304.
判断ブロック306の判断が「いいえ」の場合、ブロック310では、プロセッサ140は、特定のコンポーネントに接続されているインターフェース200のうちの特定のインターフェースの論理的分離制御部220のロック機構がロックされていた場合に、該特定のインターフェースのロック機構をロック解除する。つまり、プロセッサ140は、SI障害アグリゲータ142に障害が記憶されていない場合、特定のインターフェースを介して車載SoC104の特定のコンポーネントに安全にアクセスできると判定することができる。したがって、プロセッサ140は、ブロック310において、特定のインターフェースをロック解除する。 If the determination in decision block 306 is "no", in block 310, the processor 140 unlocks the locking mechanism of the logical isolation control unit 220 of a specific interface among the interfaces 200 connected to a specific component if the locking mechanism of the specific interface is locked. In other words, the processor 140 can determine that a specific component of the vehicle SoC 104 can be safely accessed through the specific interface if no fault is stored in the SI fault aggregator 142. Therefore, the processor 140 unlocks the specific interface in block 310.
次に、ブロック312では、プロセッサ140は、ロック解除された特定のインターフェースを介して特定のコンポーネントに通信を送ることができ、又は特定のコンポーネントから通信を受信できる。特定のインターフェースは、特定のインターフェースのアクセス・タイマ222を自動的に開始する。特定のインターフェースがロック解除されると、プロセッサ140は、車載SoC104への1つ又は複数の強く順序付けられたアクセス(一度に1つ)を開始することができる。アクセス・タイマ222は、アクセス毎に自動的に開始する。したがって、アクセス・タイマ222は、プロセッサ140によって特定のアクセスが開始されるとすぐにカウントダウンを開始することができる。 Next, in block 312, the processor 140 can send a communication to or receive a communication from the particular component through the unlocked particular interface. The particular interface automatically starts the access timer 222 for the particular interface. Once the particular interface is unlocked, the processor 140 can initiate one or more strongly ordered accesses (one at a time) to the vehicle SoC 104. The access timer 222 starts automatically for each access. Thus, the access timer 222 can start counting down as soon as the particular access is initiated by the processor 140.
判断ブロック314では、タイムアウトが発生したかどうかをプロセッサ140が判定する。アクセス・タイマ222が第1の所定の時間を超えて経過していて、特定のコンポーネントからの応答が受信されていないことを示す場合、判断ブロック314の判断は「はい」である。それ以外の場合、アクセス・タイマ222が第1の所定の時間を超えて経過したことを示す前に特定のコンポーネントから応答が受信されると、判断ブロック314の判断は「いいえ」である。 In decision block 314, processor 140 determines whether a timeout has occurred. If access timer 222 has exceeded the first predetermined time and indicates that a response has not been received from the particular component, then decision block 314 returns a "yes" determination. Otherwise, if a response is received from the particular component before access timer 222 has exceeded the first predetermined time, then decision block 314 returns a "no" determination.
判断ブロック314の判断が「はい」の場合、ブロック316では、プロセッサ140は安全障害が発生したことを示す。次に、ブロック318では、プロセッサ140は、特定のインターフェースの論理的分離制御部220のロック機構をロックする。任意選択で、ロック解除されている任意の他のインターフェースの論理的分離制御部220のロック機構をロックし、また、任意選択で、車載プラットフォーム100を安全な状態に戻すように構成されている1つ又は複数の措置を行う。 If the determination at decision block 314 is "yes," then at block 316, the processor 140 indicates that a safety fault has occurred. Next, at block 318, the processor 140 locks the locking mechanism of the logical isolation control 220 of the particular interface, optionally locks the locking mechanism of the logical isolation control 220 of any other interfaces that are unlocked, and optionally takes one or more actions configured to return the vehicle platform 100 to a safe state.
一方、判断ブロック314の判断が「いいえ」の場合、ブロック320では、プロセッサ140は通信を完了する。アクセス・タイマ222は自動的にリセットされる。次に、ブロック318では、プロセッサ140は、特定のインターフェースのロック機構をロックする。したがって、方法300は、プロセッサ140が車載SoC104の他のコンポーネント160のうちの1つにアクセスしていない場合は常にインターフェース200がロックされたままにする。その後、方法300は終了する。 On the other hand, if the determination at decision block 314 is "no," then at block 320, the processor 140 completes the communication. The access timer 222 is automatically reset. Next, at block 318, the processor 140 locks the locking mechanism of the particular interface. Thus, the method 300 ensures that the interface 200 remains locked whenever the processor 140 is not accessing one of the other components 160 of the vehicle SoC 104. The method 300 then ends.
SI110は、車載SoC104がブートされたときに、共有の不揮発性メモリ128から命令149(例えば、システムを安全な状態にするための重要な命令)を、その内部の揮発性メモリ146にコピーすることで、共有の不揮発性メモリ128へのアクセスを回避することができる。プロセッサ140は、SI110が、車両の運転サイクルを有効にするミッション・モードに入る前に命令149を認証及び検証することができる。SI110は、ミッション・モードと、コクーン・モード又は非分離モードのいずれかとで、同時に動作することができる。命令149は揮発性メモリ146に残る。これにより、プロセッサ140が共有の不揮発性メモリ128にアクセスすることを回避できる。例えば、アプリケーション・コード、フュージョン・データなどの重要でないデータは、SI110に含まれている内部のダイレクト・メモリ・アクセス(DMA:Direct Memory Access)エンジン402(図4を参照)を使用して、共有の揮発性メモリ126から取得され得る。DMAエンジン402は、任意選択でプロセッサ140のコンポーネントであってもよい。DMAエンジン402の故障は、プロセッサ140に悪影響を及ぼすことはない。これは、共有の揮発性メモリ126から取得したデータをページングする間にDMAエンジン402が故障しても、プロセッサ140は揮発性メモリ146に記憶された命令149を実行し続けるためである。 The SI 110 can avoid accessing the shared non-volatile memory 128 by copying the instructions 149 (e.g., critical instructions for putting the system into a safe state) from the shared non-volatile memory 128 to its internal volatile memory 146 when the vehicle SoC 104 is booted. The processor 140 can authenticate and verify the instructions 149 before the SI 110 enters a mission mode that enables the vehicle's driving cycle. The SI 110 can operate simultaneously in the mission mode and either the cocoon mode or the non-isolated mode. The instructions 149 remain in the volatile memory 146. This can avoid the processor 140 accessing the shared non-volatile memory 128. For example, non-critical data such as application code, fusion data, etc. can be retrieved from the shared volatile memory 126 using an internal Direct Memory Access (DMA) engine 402 (see FIG. 4) included in the SI 110. DMA engine 402 may optionally be a component of processor 140. A failure of DMA engine 402 does not adversely affect processor 140 because processor 140 continues to execute instructions 149 stored in volatile memory 146, even if DMA engine 402 fails while paging data retrieved from shared volatile memory 126.
図4は、本開示のいくつかの実施例による、障害インターフェース172の図である。図4を参照すると、車載SoC104の論理ブロックLB(1)~LB(N)は、それぞれ、関連付けられた第1の障害アグリゲータ260-1~260-Nであり得る。第1の障害アグリゲータ260-1~260-Nは、それぞれ論理ブロックLB(1)~LB(N)によって生成された障害を集約し、第1の集約された障害信号を車載SoC104の補助安全ユニット122に送信する。補助安全ユニット122は、第1の障害アグリゲータ260-1~260-Nから受信した第1の集約された障害信号を集約し、存在する場合は、任意選択の外部制御ユニット106(図1を参照)に1つ又は複数の第2の集約された障害信号を送信する第2のSoC障害アグリゲータ152を実装する。任意選択の外部制御ユニット106に第2の集約された障害信号によって障害が通知されると、任意選択の外部制御ユニット106は、いくつかの可能な措置の中から1つ又は複数の措置を行うことができる。第一に、任意選択の外部制御ユニット106は障害をクリアすることができる。第二に、任意選択の外部制御ユニット106は訂正措置を行うことができる。第三に、任意選択の外部制御ユニット106は外部システム(例えば、1つ又は複数の外部マイクロコントローラ、1つ又は複数の外部エージェントなど)に通知することができる。ただし、前述のように、いくつかの実施例では任意選択の外部制御ユニット106は省略されてもよい。 4 is a diagram of a fault interface 172 according to some embodiments of the present disclosure. Referring to FIG. 4, the logic blocks LB(1)-LB(N) of the vehicle SoC 104 may have associated first fault aggregators 260-1-260-N, respectively. The first fault aggregators 260-1-260-N aggregate faults generated by the logic blocks LB(1)-LB(N), respectively, and transmit a first aggregated fault signal to the auxiliary safety unit 122 of the vehicle SoC 104. The auxiliary safety unit 122 implements a second SoC fault aggregator 152 that aggregates the first aggregated fault signals received from the first fault aggregators 260-1-260-N and transmits one or more second aggregated fault signals, if present, to the optional external control unit 106 (see FIG. 1). When the optional external control unit 106 is notified of the fault by the second aggregated fault signal, the optional external control unit 106 can take one or more actions from among several possible actions. First, the optional external control unit 106 can clear the fault. Second, the optional external control unit 106 can take corrective action. Third, the optional external control unit 106 can notify an external system (e.g., one or more external microcontrollers, one or more external agents, etc.). However, as previously mentioned, in some embodiments the optional external control unit 106 may be omitted.
図1を参照すると、前述のように、SI110が車載SoC104の他のコンポーネント160から分離されている間に、SI110と車載SoC104の他のコンポーネント160との間で少なくとも一部の通信を有効にする必要がある。特に、車載SoC104の論理ブロックLB(1)~LB(N)で発生する障害は、障害インターフェース172を介してSI110に伝達されなければならない。このような通信を提供する1つの方法は、第1の障害アグリゲータ260-1~260-N(図4を参照)に第1の集約された障害信号を直接SI110に送信させることである。そのためには、障害インターフェース172に、SI110と第1の障害アグリゲータ260-1~260-Nの各々との間の別個の伝送線又は信号導体が含まれている必要がある。これは、車載SoC104の他のコンポーネント160からSI110が分離されていることによって複雑になる。例えば、図2を参照すると、電圧レベル・シフタ240に、信号導体毎に個別の電圧レベル・シフタを含める必要がある。さらに、SI110と車載SoC104の他のコンポーネント160との間の信号導体の数が多いほど、SI110は車載SoC104で発生する干渉に対してより脆弱になる。 With reference to FIG. 1, as previously mentioned, while SI 110 is isolated from the other components 160 of the vehicle SoC 104, at least some communication needs to be enabled between SI 110 and the other components 160 of the vehicle SoC 104. In particular, faults occurring in logic blocks LB(1)-LB(N) of the vehicle SoC 104 must be communicated to SI 110 via fault interface 172. One way to provide such communication is to have the first fault aggregators 260-1-260-N (see FIG. 4) transmit a first aggregated fault signal directly to SI 110. To do so, fault interface 172 needs to include separate transmission lines or signal conductors between SI 110 and each of the first fault aggregators 260-1-260-N. This is complicated by the isolation of SI 110 from the other components 160 of the vehicle SoC 104. For example, referring to FIG. 2, voltage level shifter 240 must include a separate voltage level shifter for each signal conductor. Furthermore, the greater the number of signal conductors between SI 110 and other components 160 on vehicle SoC 104, the more vulnerable SI 110 becomes to interference generated on vehicle SoC 104.
代わりに、図4を参照して、SoC障害アグリゲータ152の各々を、次の3つの信号導体によってSI110に接続することができる:(1)訂正されたエラー信号導体410、(2)訂正されていないエラー信号導体412、及び(3)SoC障害アグリゲータ信号導体414。この配置により、障害インターフェース172は、論理ブロックLB(1)~LB(N)からの障害を、多すぎて電気的干渉を引き起こすほどに多くの導体を障害インターフェース172に含めることなく、且つ大きすぎて車載SoC104及び/又はSI110内の混雑を引き起こしてしまうほどに障害インターフェース172を大きくすることなく、SI110に報告することができる。信号導体410、412、及び414は、それぞれステータス・ビット「BT1」、「BT2」、及び「BT3」を設定できる。ステータス・ビットの各々は、設定された後、続いてプロセッサ140によってクリアされ得る。 4, each of the SoC fault aggregators 152 can be connected to the SI 110 by three signal conductors: (1) a corrected error signal conductor 410, (2) an uncorrected error signal conductor 412, and (3) a SoC fault aggregator signal conductor 414. This arrangement allows the fault interface 172 to report faults from logic blocks LB(1)-LB(N) to the SI 110 without including so many conductors in the fault interface 172 that they would cause electrical interference, and without making the fault interface 172 so large that it would cause congestion in the vehicle SoC 104 and/or the SI 110. The signal conductors 410, 412, and 414 can set status bits "BT1", "BT2", and "BT3", respectively. After each of the status bits is set, it can subsequently be cleared by the processor 140.
メールボックス156は、メールボックス割り込み信号導体416によってSI110の割り込みコントローラ141に接続され得る。信号導体410~416の各々は、ワイヤ、信号トレースなどとして実装され得る。 The mailbox 156 may be connected to the interrupt controller 141 of the SI 110 by a mailbox interrupt signal conductor 416. Each of the signal conductors 410-416 may be implemented as a wire, a signal trace, or the like.
図5Aは、本開示のいくつかの実施例による、SI110(図1、図2、図4、図8、及び図10を参照)に障害を伝達する方法500を示すフロー図である。ここで、図5Aを参照すると、本明細書に説明される方法500の各ブロックには、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組み合わせを使用して実行され得るコンピューティング・プロセスが含まれる。例えば、メモリに記憶された命令を実行するプロセッサ(例えば、図1及び図4に示すプロセッサ150)によって、様々な機能が実行され得る。方法500の少なくとも一部は、コンピュータ記憶媒体に記憶されたコンピュータ使用可能命令としても具体化され得る。方法500は、いくつか例を挙げると、スタンドアロン・アプリケーション、サービス又はホスト・サービス(スタンドアロン又は別のホスト・サービスとの組み合わせ)、又は別の製品へのプラグ・インによって提供され得る。また、方法500は、例として、図1の車載プラットフォーム100に関して説明される。しかしながら、方法500は、加えて又は或いは、任意の1つのシステム、又は本明細書で説明するものを含むが、これらに限定されないシステムの任意の組み合わせによって実行され得る。 5A is a flow diagram illustrating a method 500 of communicating a fault to the SI 110 (see FIGS. 1, 2, 4, 8, and 10) according to some embodiments of the present disclosure. Referring now to FIG. 5A, each block of the method 500 described herein includes a computing process that may be performed using any combination of hardware, firmware, and/or software. For example, various functions may be performed by a processor (e.g., the processor 150 shown in FIGS. 1 and 4) executing instructions stored in a memory. At least a portion of the method 500 may also be embodied as computer usable instructions stored on a computer storage medium. The method 500 may be provided by a standalone application, a service or a host service (standalone or in combination with another host service), or a plug-in to another product, to name a few. Also, the method 500 is described with respect to the vehicle platform 100 of FIG. 1 as an example. However, the method 500 may additionally or alternatively be performed by any one system or any combination of systems, including but not limited to those described herein.
説明を容易にするために、方法500は、SoC障害アグリゲータ152(図1、図2、及び図4を参照)のうちの特定の1つによって実行されているものとして説明する。つまり、方法500はハードウェアによって実行され得る。図5Aを参照すると、第1のブロック502において、特定のSoC障害アグリゲータは、第1の障害アグリゲータ260-1~260-N(図2及び図4を参照)の少なくとも一部分から第1の集約された障害信号を受信する。 For ease of explanation, method 500 is described as being performed by a particular one of the SoC fault aggregators 152 (see FIGS. 1, 2, and 4). That is, method 500 may be performed by hardware. Referring to FIG. 5A, in a first block 502, the particular SoC fault aggregator receives a first aggregated fault signal from at least a portion of first fault aggregators 260-1 through 260-N (see FIGS. 2 and 4).
ブロック506では、特定のSoC障害アグリゲータは、訂正されたエラーによって引き起こされた障害を識別する第1の集約された障害信号を、訂正されたエラー信号に集約する。次に、ブロック508では、特定のSoC障害アグリゲータは、訂正されたエラー信号を、訂正されたエラー信号導体410(図4を参照)を介してSI110(図1、図2、図4、図8、及び図10を参照)に送信する。ブロック510では、特定のSoC障害アグリゲータは、訂正されたエラー毎に割り込みを割り込みコントロール154(図1及び図4を参照)に送る。割り込みコントローラ154は、割り込みを補助安全ユニット122(図1及び図4を参照)のプロセッサ150(図1及び図4を参照)に転送する。各割り込みは、割り込みに関連付けられた訂正されたエラーをプロセッサ150に通知する。 In block 506, the particular SoC fault aggregator aggregates the first aggregated fault signals, which identify faults caused by the corrected errors, into a corrected error signal. Then, in block 508, the particular SoC fault aggregator transmits the corrected error signal to the SI 110 (see FIGS. 1, 2, 4, 8, and 10) via the corrected error signal conductor 410 (see FIG. 4). In block 510, the particular SoC fault aggregator sends an interrupt for each corrected error to the interrupt controller 154 (see FIGS. 1 and 4). The interrupt controller 154 forwards the interrupt to the processor 150 (see FIGS. 1 and 4) of the auxiliary safety unit 122 (see FIGS. 1 and 4). Each interrupt notifies the processor 150 of the corrected error associated with the interrupt.
ブロック512では、特定のSoC障害アグリゲータは、訂正されたエラー信号内に識別される第1の訂正されたエラーについて訂正されたエラー・タイマ420C(図4を参照)を開始する。 In block 512, the particular SoC fault aggregator starts a corrected error timer 420C (see FIG. 4) for the first corrected error identified in the corrected error signal.
判断ブロック514では、特定のSoC障害アグリゲータは、第1の訂正されたエラーが特定のSoC障害アグリゲータからクリアされたかどうかを判定する。訂正されたエラー・タイマ420C(図4を参照)が第2の所定の時間を超えて経過したことを示す前に第1の訂正されたエラーがクリアされている場合、判断ブロック514の判断は「はい」である。それ以外の場合、判断ブロック514の判断は「いいえ」である。判断ブロック514の判断が「はい」の場合、ブロック515では、特定のSoC障害アグリゲータは措置を行わない。一方、判断ブロック514の判断が「いいえ」の場合、特定のSoC障害アグリゲータは判断ブロック516に進む。 In decision block 514, the particular SoC fault aggregator determines whether the first corrected error has been cleared from the particular SoC fault aggregator. If the first corrected error has been cleared before the corrected error timer 420C (see FIG. 4) indicates that the second predetermined time has elapsed, the decision in decision block 514 is "yes". Otherwise, the decision in decision block 514 is "no". If the decision in decision block 514 is "yes", then in block 515, the particular SoC fault aggregator takes no action. On the other hand, if the decision in decision block 514 is "no", then the particular SoC fault aggregator proceeds to decision block 516.
判断ブロック516では、プロセッサ150は訂正されたエラー・タイマ420C(図4を参照)が、第2の所定の時間を超えて経過したことを示すかどうか、つまり、訂正されたエラー・タイマ420Cがタイムアウトしたか又は期限切れになったかどうかを判定する。第2の所定の時間が経過している場合、判断ブロック516の判断は「はい」である。それ以外の場合、判断ブロック516の判断は「いいえ」である。判断ブロック516の判断が「はい」の場合、特定のSoC障害アグリゲータはブロック518に進む。それ以外の場合、判断ブロック516の判断が「いいえ」の場合、特定のSoC障害アグリゲータは判断ブロック514に戻り、第1の訂正されたエラーがプロセッサ150によってクリアされるのを待機する。したがって、特定のSoC障害アグリゲータは、第1の訂正されたエラーがクリアされたかどうか、及び訂正されたエラー・タイマ420Cが期限切れになったかどうかをモニタリングし続ける。訂正されたエラー・タイマ420Cが期限切れになる前に第1の訂正されたエラーがクリアされた場合、特定のSoC障害アグリゲータは、ブロック515で措置を行わない。一方、第1の訂正されたエラーがクリアされる前に訂正されたエラー・タイマ420Cが期限切れになる場合、特定のSoC障害アグリゲータはブロック518に進む。ブロック518では、特定のSoC障害アグリゲータは、SoC障害アグリゲータ信号を、SoC障害アグリゲータ信号同体414(図4を参照)を介してSI110(図1、図2、図4、図8、及び図10を参照)に送信する。 In decision block 516, the processor 150 determines whether the corrected error timer 420C (see FIG. 4) indicates that more than a second predetermined time has elapsed, i.e., whether the corrected error timer 420C has timed out or expired. If the second predetermined time has elapsed, the decision at decision block 516 is "yes." Otherwise, the decision at decision block 516 is "no." If the decision at decision block 516 is "yes," the particular SoC fault aggregator proceeds to block 518. Otherwise, if the decision at decision block 516 is "no," the particular SoC fault aggregator returns to decision block 514 and waits for the first corrected error to be cleared by the processor 150. Thus, the particular SoC fault aggregator continues to monitor whether the first corrected error has been cleared and whether the corrected error timer 420C has expired. If the first corrected error is cleared before the corrected error timer 420C expires, the particular SoC fault aggregator takes no action at block 515. On the other hand, if the corrected error timer 420C expires before the first corrected error is cleared, the particular SoC fault aggregator proceeds to block 518. At block 518, the particular SoC fault aggregator sends a SoC fault aggregator signal to the SI 110 (see FIGS. 1, 2, 4, 8, and 10) via the SoC fault aggregator signal entity 414 (see FIG. 4).
ブロック520では、特定のSoC障害アグリゲータは、訂正されていないエラーによって引き起こされた障害を識別する、ブロック502で受信された第1の集約された障害信号を、訂正されていないエラー信号に集約する。次に、ブロック522では、特定のSoC障害アグリゲータは、訂正されていないエラー信号を、訂正されていないエラー信号導体412(図4を参照)を介してSI110(図1、図2、図4、図8、及び図10を参照)に送信する。ブロック524では、特定のSoC障害アグリゲータは、訂正されていないエラー毎に割り込みを割り込みコントロール154(図1及び図4を参照)に送る。割り込みコントローラ154は、割り込みを補助安全ユニット122(図1及び図4を参照)のプロセッサ150(図1及び図4を参照)に転送する。各割り込みは、割り込みに関連付けられた訂正されていないエラーをプロセッサ150に通知する。 In block 520, the particular SoC fault aggregator aggregates the first aggregated fault signals received in block 502, which identify faults caused by uncorrected errors, into an uncorrected error signal. Then, in block 522, the particular SoC fault aggregator transmits the uncorrected error signal to the SI 110 (see FIGS. 1, 2, 4, 8, and 10) via the uncorrected error signal conductor 412 (see FIG. 4). In block 524, the particular SoC fault aggregator sends an interrupt for each uncorrected error to the interrupt controller 154 (see FIGS. 1 and 4). The interrupt controller 154 forwards the interrupt to the processor 150 (see FIGS. 1 and 4) of the auxiliary safety unit 122 (see FIGS. 1 and 4). Each interrupt notifies the processor 150 of the uncorrected error associated with the interrupt.
ブロック526では、特定のSoC障害アグリゲータは、訂正されていないエラー信号内に識別される第1の訂正されていないエラーについて訂正されていないエラー・タイマ420U(図4を参照)を開始する。 In block 526, the particular SoC fault aggregator starts an uncorrected error timer 420U (see FIG. 4) for the first uncorrected error identified in the uncorrected error signal.
判断ブロック528では、特定のSoC障害アグリゲータは、第1の訂正されていないエラーが特定のSoC障害アグリゲータからクリアされたかどうかを判定する。訂正されていないエラー・タイマ420U(図4を参照)が第3の所定の時間を超えて経過したことを示す前に第1の訂正されていないエラーがクリアされている場合、判断ブロック528の判断は「はい」である。それ以外の場合、判断ブロック528の判断は「いいえ」である。判断ブロック528の判断が「はい」の場合、ブロック529では、特定のSoC障害アグリゲータは措置を行わない。判断ブロック528の判断が「いいえ」の場合、特定のSoC障害アグリゲータは判断ブロック530に進む。 In decision block 528, the particular SoC fault aggregator determines whether the first uncorrected error has been cleared from the particular SoC fault aggregator. If the first uncorrected error has been cleared before the uncorrected error timer 420U (see FIG. 4) indicates that the third predetermined time has elapsed, the decision in decision block 528 is "yes". Otherwise, the decision in decision block 528 is "no". If the decision in decision block 528 is "yes", then in block 529, the particular SoC fault aggregator takes no action. If the decision in decision block 528 is "no", then the particular SoC fault aggregator proceeds to decision block 530.
判断ブロック530では、プロセッサ150は訂正されていないエラー・タイマ420Uが、第3の所定の時間を超えて経過したことを示すかどうか、つまり、訂正されていないエラー・タイマ420U(図4を参照)がタイムアウトしたか又は期限切れになったかどうかを判定する。第3の所定の時間が経過している場合、判断ブロック530の判断は「はい」である。それ以外の場合、判断ブロック530の判断は「いいえ」である。判断ブロック530の判断が「はい」の場合、特定のSoC障害アグリゲータはブロック532に進む。一方、判断ブロック530の判断が「いいえ」の場合、特定のSoC障害アグリゲータは判断ブロック528に戻り、第1の訂正されていないエラーがプロセッサ150によってクリアされるのを待機する。したがって、特定のSoC障害アグリゲータは、第1の訂正されていないエラーがクリアされたかどうか、及び訂正されていないエラー・タイマ420Uが期限切れになったかどうかをモニタリングし続ける。訂正されていないエラー・タイマ420Uが期限切れになる前に第1の訂正されていないエラーがクリアされた場合、特定のSoC障害アグリゲータは、ブロック529で措置を行わない。一方、第1の訂正されていないエラーがクリアされる前に訂正されていないエラー・タイマ420Uが期限切れになる場合、特定のSoC障害アグリゲータはブロック532に進む。ブロック532では、特定のSoC障害アグリゲータは、SoC障害アグリゲータ信号を、SoC障害アグリゲータ信号同体414(図4を参照)を介してSI110(図1、図2、図4、図8、及び図10を参照)に送信する。この時点で、方法500は終了する。 In decision block 530, processor 150 determines whether uncorrected error timer 420U indicates that more than a third predetermined time has elapsed, i.e., whether uncorrected error timer 420U (see FIG. 4) has timed out or expired. If the third predetermined time has elapsed, the decision of decision block 530 is "yes." Otherwise, the decision of decision block 530 is "no." If the decision of decision block 530 is "yes," the particular SoC fault aggregator proceeds to block 532. On the other hand, if the decision of decision block 530 is "no," the particular SoC fault aggregator returns to decision block 528 and waits for the first uncorrected error to be cleared by processor 150. Thus, the particular SoC fault aggregator continues to monitor whether the first uncorrected error has been cleared and whether uncorrected error timer 420U has expired. If the first uncorrected error is cleared before the uncorrected error timer 420U expires, the particular SoC fault aggregator takes no action at block 529. On the other hand, if the uncorrected error timer 420U expires before the first uncorrected error is cleared, the particular SoC fault aggregator proceeds to block 532. In block 532, the particular SoC fault aggregator sends a SoC fault aggregator signal to the SI 110 (see FIGS. 1, 2, 4, 8, and 10) via the SoC fault aggregator signal entity 414 (see FIG. 4). At this point, the method 500 ends.
図5Bは、本開示のいくつかの実施例による、プロセッサ150(図1及び図4を参照)がSoC障害アグリゲータ152(図1、図2、及び図4を参照)から受信した割り込みを処理するために使用し得る方法540を示すフロー図である。ここで、図5Bを参照すると、本明細書に説明される方法540の各ブロックには、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組み合わせを使用して実行され得るコンピューティング・プロセスが含まれる。例えば、メモリに記憶された命令を実行するプロセッサ(例えば、プロセッサ150)によって、様々な機能が実行され得る。方法540の少なくとも一部は、コンピュータ記憶媒体に記憶されたコンピュータ使用可能命令としても具体化され得る。方法540は、いくつか例を挙げると、スタンドアロン・アプリケーション、サービス又はホスト・サービス(スタンドアロン又は別のホスト・サービスとの組み合わせ)、又は別の製品へのプラグ・インによって提供され得る。また、方法540は、例として、図1の車載プラットフォーム100に関して説明される。しかしながら、方法540は、加えて又は或いは、任意の1つのシステム、又は本明細書で説明されているものを含むが、これらに限定されないシステムの任意の組み合わせによって実行され得る。 FIG. 5B is a flow diagram illustrating a method 540 that the processor 150 (see FIGS. 1 and 4) may use to process an interrupt received from the SoC fault aggregator 152 (see FIGS. 1, 2, and 4) according to some embodiments of the present disclosure. Referring now to FIG. 5B, each block of the method 540 described herein includes a computing process that may be performed using any combination of hardware, firmware, and/or software. For example, various functions may be performed by a processor (e.g., the processor 150) executing instructions stored in a memory. At least a portion of the method 540 may also be embodied as computer usable instructions stored on a computer storage medium. The method 540 may be provided by a standalone application, a service or a host service (standalone or in combination with another host service), or a plug-in to another product, to name a few examples. Also, the method 540 is described with respect to the vehicle platform 100 of FIG. 1 as an example. However, method 540 may additionally or alternatively be performed by any one system or any combination of systems, including but not limited to those described herein.
説明を容易にするために、方法540はプロセッサ150(図1及び図4を参照)によって実行されているものとして説明する。図5Bを参照すると、第1のブロック541において、プロセッサ150は、SoC障害アグリゲータ152のうちの特定のSoC障害アグリゲータから特定の割り込みを受信する。次に、ブロック542では、プロセッサ150は、特定の割り込み内に識別された1つ又は複数のエラーをトリアージし、エラーに対処するために1つ又は複数の訂正措置を行うことができる。 For ease of explanation, method 540 is described as being performed by processor 150 (see FIGS. 1 and 4). Referring to FIG. 5B, in a first block 541, processor 150 receives a particular interrupt from a particular one of SoC fault aggregators 152. Then, in block 542, processor 150 may triage one or more errors identified in the particular interrupt and take one or more corrective actions to address the errors.
プロセッサ150がエラーをトリアージしている及び/又は訂正措置を行っているときに問題が発生した場合、プロセッサ150は特定の割り込みの処理を続けることはできない場合がある。これが発生した場合、判断ブロック543の判断は「はい」であり、ブロック544において、プロセッサ150は特定の割り込みに関してさらなる措置を行わない。一方、プロセッサ150が特定の割り込みをトリアージすることができ、任意選択で、訂正措置を行うことができる場合、判断ブロック543の判断は「いいえ」である。判断ブロック543の判断が「いいえ」である場合、ブロック545では、プロセッサ150は特定の割り込みに関連する情報をメールボックス156に書き込み、プロセッサ140がこのメールボックス156を読み取ることができる。次に、ブロック546では、プロセッサ150は、メールボックス割り込みをメールボックス割り込み信号導体416を介して、割り込みコントローラ141に送信する。メールボックス割り込みは、ブロック541で受信された割り込み内で識別されたエラーのシビアリティを示す。 If a problem occurs while processor 150 is triaging the error and/or taking corrective action, processor 150 may not be able to continue processing the particular interrupt. If this occurs, the determination at decision block 543 is "yes" and processor 150 takes no further action with respect to the particular interrupt in block 544. On the other hand, if processor 150 is able to triage the particular interrupt and, optionally, take corrective action, the determination at decision block 543 is "no". If the determination at decision block 543 is "no", in block 545 processor 150 writes information related to the particular interrupt to mailbox 156, which processor 140 can read. Then, in block 546, processor 150 sends a mailbox interrupt to interrupt controller 141 via mailbox interrupt signal conductor 416. The mailbox interrupt indicates the severity of the error identified in the interrupt received in block 541.
次に、判断ブロック547において、プロセッサ150は、特定のSoC障害アグリゲータから、特定の割り込みの生成元の障害をプロセッサ150がクリアすべきかどうかを判定する。プロセッサ150が障害をクリアすると判断した場合、判断ブロック547の判断は「はい」である。それ以外の場合、判断ブロック547の判断は「いいえ」である。プロセッサ150によって行われた訂正措置がエラーに対処できたか、又は障害は訂正されたエラー(例えば、論理ブロックLB(1)~LB(N)のうちの1つによって訂正されたエラー)によって生成された場合、判断ブロック547の判断は「はい」であり得る。別の非限定的な例として、プロセッサ150が、プロセッサ140がエラーをクリアしたことを示すメールボックス割り込みをプロセッサ140から受信した場合、判断ブロック547の判断は「はい」であり得る。判断ブロック547の判断が「いいえ」である場合、ブロック548では、プロセッサ150は特定の割り込みに関してさらなる措置を行わない。一方、判断ブロック547の判断が「はい」の場合、ブロック549では、プロセッサ150は特定のSoC障害アグリゲータから障害をクリアする。プロセッサ150は、特定のSoC障害アグリゲータから障害がクリアされたことをプロセッサ140に通知することができる。その後、方法540は終了する。 Next, in decision block 547, processor 150 determines whether processor 150 should clear the fault that generated the particular interrupt from the particular SoC fault aggregator. If processor 150 determines to clear the fault, the decision in decision block 547 is "yes". Otherwise, the decision in decision block 547 is "no". The decision in decision block 547 may be "yes" if the corrective action taken by processor 150 was able to address the error or the fault was generated by a corrected error (e.g., an error corrected by one of logic blocks LB(1)-LB(N)). As another non-limiting example, the decision in decision block 547 may be "yes" if processor 150 receives a mailbox interrupt from processor 140 indicating that processor 140 has cleared the error. If the decision in decision block 547 is "no", in block 548, processor 150 does not take further action with respect to the particular interrupt. On the other hand, if the determination at decision block 547 is "yes," then at block 549, processor 150 clears the fault from the particular SoC fault aggregator. Processor 150 may notify processor 140 that the fault has been cleared from the particular SoC fault aggregator. Method 540 then ends.
図5Cは、本開示のいくつかの実施例による、SI110(図1、図2、図4、図8、及び図10を参照)が訂正されたエラー信号及び訂正されていないエラー信号を処理するために使用し得る方法550を示すフロー図である。ここで、図5Cを参照すると、本明細書に説明される方法550の各ブロックには、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組み合わせを使用して実行され得るコンピューティング・プロセスが含まれる。例えば、様々な機能は、メモリ(例えば、図1、図2、及び図4に示す揮発性メモリ146)に記憶された命令(例えば、図1、図2、及び図4に示す命令149)をプロセッサ(例えば、図1、図2、及び図4に示すプロセッサ140)が実行することによって実行され得る。方法550の少なくとも一部は、コンピュータ記憶媒体に記憶されたコンピュータ使用可能命令としても具体化され得る。方法550は、いくつか例を挙げると、スタンドアロン・アプリケーション、サービス又はホスト・サービス(スタンドアロン又は別のホスト・サービスとの組み合わせ)、又は別の製品へのプラグ・インによって提供され得る。また、方法550は、例として、図1の車載プラットフォーム100に関して説明される。しかしながら、方法550は、加えて又は或いは、任意の1つのシステム、又は本明細書で説明されているものを含むが、これらに限定されないシステムの任意の組み合わせによって実行され得る。 FIG. 5C is a flow diagram illustrating a method 550 that the SI 110 (see FIGS. 1, 2, 4, 8, and 10) may use to process corrected and uncorrected error signals, according to some embodiments of the present disclosure. Now, referring to FIG. 5C, each block of the method 550 described herein includes a computing process that may be performed using any combination of hardware, firmware, and/or software. For example, various functions may be performed by a processor (e.g., processor 140 shown in FIGS. 1, 2, and 4) executing instructions (e.g., instructions 149 shown in FIGS. 1, 2, and 4) stored in a memory (e.g., volatile memory 146 shown in FIGS. 1, 2, and 4). At least a portion of the method 550 may also be embodied as computer usable instructions stored on a computer storage medium. The method 550 may be provided by a standalone application, a service or a host service (standalone or in combination with another host service), or a plug-in to another product, to name a few examples. Also, the method 550 is described with respect to the vehicle-mounted platform 100 of FIG. 1 as an example. However, the method 550 may additionally or alternatively be performed by any one system or any combination of systems, including but not limited to those described herein.
説明を容易にするために、方法550はSI障害アグリゲータ142(図1、図2、及び図4を参照)及びプロセッサ140(図1、図2、及び図4を参照)によって実行されているものとして説明する。図5Cを参照すると、第1のブロック552において、SI110(図1、図2、図4、図8、及び図10を参照)のSI障害アグリゲータ142は、ステータス・ビット「BT1」を設定する訂正されたエラー信号、及び/又はステータス・ビット「BT2」を設定する訂正されていないエラー信号を受信する。SI障害アグリゲータ142が訂正されたエラー信号導体410で訂正されたエラー信号を受信すると、ブロック554では、SI障害アグリゲータ142はプロセッサ140の割り込みコントローラ141(図1、図2、及び図4を参照)に割り込みを送る。この割り込みは、プロセッサ140に訂正されたエラーを知らせる。 For ease of explanation, method 550 is described as being performed by SI fault aggregator 142 (see FIGS. 1, 2, and 4) and processor 140 (see FIGS. 1, 2, and 4). Referring to FIG. 5C, in a first block 552, SI fault aggregator 142 of SI 110 (see FIGS. 1, 2, 4, 8, and 10) receives a corrected error signal that sets status bit "BT1" and/or an uncorrected error signal that sets status bit "BT2". When SI fault aggregator 142 receives a corrected error signal on corrected error signal conductor 410, in block 554, SI fault aggregator 142 sends an interrupt to interrupt controller 141 of processor 140 (see FIGS. 1, 2, and 4). The interrupt informs processor 140 of the corrected error.
判断ブロック556では、プロセッサ140(図1、図2、及び図4を参照)は、メールボックス割り込み信号導体416を介してプロセッサ150(図1及び図4を参照)からメールボックス割り込みを受信したかどうかを判定する。メールボックス割り込みが受信されている場合、メールボックス割り込みは訂正されたエラーのシビアリティを示す。プロセッサ140がメールボックス割り込みを受信している場合、判断ブロック556の判断は「はい」である。それ以外の場合、判断ブロック556の判断は「いいえ」である。判断ブロック556の判断が「いいえ」である場合、ブロック558では、プロセッサ140はメールボックス割り込みか、又は、SoC障害アグリゲータ信号かのいずれかの受信を待機する。判断ブロック556の判断が「はい」の場合、プロセッサ140は判断ブロック560に進む。 In decision block 556, processor 140 (see FIGS. 1, 2, and 4) determines whether it has received a mailbox interrupt from processor 150 (see FIGS. 1 and 4) via mailbox interrupt signal conductor 416. If a mailbox interrupt has been received, the mailbox interrupt indicates the severity of the corrected error. If processor 140 has received a mailbox interrupt, the decision at decision block 556 is "yes." Otherwise, the decision at decision block 556 is "no." If the decision at decision block 556 is "no," then in block 558, processor 140 waits to receive either a mailbox interrupt or a SoC fault aggregator signal. If the decision at decision block 556 is "yes," processor 140 proceeds to decision block 560.
判断ブロック560では、プロセッサ140(図1、図2、及び図4を参照)は、メールボックス156を読み取るかどうかを判断する。この判断は、メールボックス割り込みによってプロセッサ140に伝達された訂正されたエラーのシビアリティに少なくとも部分的に基づき得る。例えば、プロセッサ140は、訂正されたエラーのシビアリティが閾値(例えば、7)以上の場合にメールボックス156を読み取らないと判断し、訂正されたエラーのシビアリティが閾値を下回っている場合にメールボックス156を読み取ると判断することができる。判断ブロック560の判断が「はい」の場合、ブロック562では、プロセッサ140はメールボックス156を読み取る。次に、プロセッサ140はブロック564に進み、そこで、プロセッサ140は、例えば、ステータス・ビット「BT1」の設定を解除することによって、訂正されたエラーをクリアする。判断ブロック560の判断が「いいえ」の場合、プロセッサ140はブロック564に進み、例えば、ステータス・ビット「BT1」の設定を解除することによって、訂正されたエラーをクリアする。プロセッサ140がSI障害アグリゲータ142から訂正されたエラーをクリアする前に、プロセッサ140は、訂正されたエラーに対応する障害が特定のSoC障害アグリゲータからクリアされたというプロセッサ150からの通知を待機してもよい。しかしながら、エラーは訂正されているため、いくつかの実施例では、プロセッサ140は、このような通知を最初に受信することなく、訂正されたエラーを単にクリアしてもよい。 At decision block 560, processor 140 (see FIGS. 1, 2, and 4) determines whether to read mailbox 156. This determination may be based at least in part on the severity of the corrected errors communicated to processor 140 by the mailbox interrupt. For example, processor 140 may determine not to read mailbox 156 if the severity of the corrected errors is equal to or greater than a threshold (e.g., 7) and may determine to read mailbox 156 if the severity of the corrected errors is below the threshold. If the determination at decision block 560 is "yes," then at block 562, processor 140 reads mailbox 156. Processor 140 then proceeds to block 564, where processor 140 clears the corrected errors, for example, by unsetting status bit "BT1." If the determination at decision block 560 is "no," processor 140 proceeds to block 564, where processor 140 clears the corrected errors, for example, by unsetting status bit "BT1." Before processor 140 clears the corrected error from SI fault aggregator 142, processor 140 may wait for notification from processor 150 that the fault corresponding to the corrected error has been cleared from the particular SoC fault aggregator. However, since the error has been corrected, in some embodiments processor 140 may simply clear the corrected error without first receiving such notification.
SI障害アグリゲータ142が訂正されていないエラー信号導体412で訂正されていないエラー信号を受信すると、ブロック566では、SI障害アグリゲータ142はプロセッサ140の割り込みコントローラ141(図1、図2、及び図4を参照)に割り込みを送る。この割り込みは、プロセッサ140に訂正されていないエラーを知らせる。 When the SI fault aggregator 142 receives an uncorrected error signal on the uncorrected error signal conductor 412, in block 566, the SI fault aggregator 142 sends an interrupt to the interrupt controller 141 (see Figures 1, 2, and 4) of the processor 140. The interrupt informs the processor 140 of the uncorrected error.
判断ブロック568では、プロセッサ140(図1、図2、及び図4を参照)は、メールボックス割り込み信号導体416を介してプロセッサ150(図1及び図4を参照)からメールボックス割り込みを受信したかどうかを判定する。メールボックス割り込みが受信されている場合、メールボックス割り込みは訂正されていないエラーのシビアリティを示す。プロセッサ140がメールボックス割り込みを受信している場合、判断ブロック568の判断は「はい」である。それ以外の場合、判断ブロック568の判断は「いいえ」である。判断ブロック568の判断が「いいえ」である場合、ブロック558では、プロセッサ140はメールボックス割り込みか、SoC障害アグリゲータ信号のいずれかの受信を待機する。判断ブロック568の判断が「はい」の場合、プロセッサ140は判断ブロック570に進む。 In decision block 568, processor 140 (see FIGS. 1, 2, and 4) determines whether a mailbox interrupt has been received from processor 150 (see FIGS. 1 and 4) via mailbox interrupt signal conductor 416. If a mailbox interrupt has been received, the mailbox interrupt indicates the severity of the uncorrected error. If processor 140 has received a mailbox interrupt, the decision at decision block 568 is "yes." Otherwise, the decision at decision block 568 is "no." If the decision at decision block 568 is "no," then in block 558 processor 140 waits to receive either a mailbox interrupt or a SoC fault aggregator signal. If the decision at decision block 568 is "yes," processor 140 proceeds to decision block 570.
判断ブロック570では、プロセッサ140(図1、図2、及び図4を参照)は、メールボックス156を読み取るかどうかを判断する。この判断は、訂正されていないエラーのシビアリティに少なくとも部分的に基づき得る。例えば、プロセッサ140は、訂正されていないエラーのシビアリティが閾値(例えば、7)以上の場合にメールボックス156を読み取らないと判断し、訂正されたエラーのシビアリティが閾値を下回っている場合にメールボックス156を読み取ると判断することができる。判断ブロック570の判断が「はい」の場合、ブロック572では、プロセッサ140はメールボックス156を読み取る。その後、プロセッサ140はブロック573に進む。判断ブロック570の判断が「いいえ」の場合、プロセッサ140はブロック573に進む。 At decision block 570, processor 140 (see FIGS. 1, 2, and 4) determines whether to read mailbox 156. This determination may be based at least in part on the severity of the uncorrected errors. For example, processor 140 may determine not to read mailbox 156 if the severity of the uncorrected errors is equal to or greater than a threshold (e.g., 7) and may determine to read mailbox 156 if the severity of the corrected errors is below the threshold. If the determination at decision block 570 is "yes," then at block 572, processor 140 reads mailbox 156. Processor 140 then proceeds to block 573. If the determination at decision block 570 is "no," processor 140 proceeds to block 573.
判断ブロック573では、プロセッサ140は、1つ又は複数の訂正措置を行うかどうかを判断する。判断ブロック573の判断が「はい」である場合、ブロック574では、プロセッサ140は、車両のブレーキをかけるなどの訂正措置を行う。その後、プロセッサ140はブロック575に進む。 In decision block 573, processor 140 determines whether to take one or more corrective actions. If the answer at decision block 573 is "yes," then in block 574, processor 140 takes corrective action, such as applying the vehicle brakes. Processor 140 then proceeds to block 575.
判断ブロック573の判断が「いいえ」の場合、プロセッサ140は判断ブロック575に進む。判断ブロック575では、プロセッサ140は、外部システム404に通知するかどうかを判断する。判断ブロック575の判断が「はい」である場合、ブロック576では、プロセッサ140は外部システム404に通知し、ブロック578に進む。判断ブロック575の判断が「いいえ」の場合、プロセッサ140はブロック578に進む。 If the determination at decision block 573 is "no", the processor 140 proceeds to decision block 575. At decision block 575, the processor 140 determines whether to notify the external system 404. If the determination at decision block 575 is "yes", at block 576, the processor 140 notifies the external system 404 and proceeds to block 578. If the determination at decision block 575 is "no", the processor 140 proceeds to block 578.
ブロック578では、プロセッサ140は、メールボックス156にメールボックス割り込みを送る、及び/又は例えば、ステータス・ビット「BT2」の設定を解除することによって訂正されていないエラーをクリアする。任意選択で、プロセッサ140は、障害情報をメールボックス156に書き込むことができる。プロセッサ140がSI障害アグリゲータ142から訂正されていないエラーをクリアする前に、プロセッサ140は、訂正されていないエラーに対応する障害が特定のSoC障害アグリゲータからクリアされたというプロセッサ150からの通知を待機してもよい。その後、方法550は終了する。メールボックス割り込みは、プロセッサ150によって受信され、プロセッサ150が訂正されていないエラーに対応する障害をクリアするべきかどうかを判断する際に、判断ブロック547(図5Bを参照)で使用され得る。プロセッサ150は、任意選択で、この判断をする前に、プロセッサ140によって、メールボックス156に書き込まれた障害情報を読み取ることができる。 In block 578, the processor 140 sends a mailbox interrupt to the mailbox 156 and/or clears the uncorrected error, for example, by unsetting the status bit "BT2". Optionally, the processor 140 may write fault information to the mailbox 156. Before the processor 140 clears the uncorrected error from the SI fault aggregator 142, the processor 140 may wait for notification from the processor 150 that the fault corresponding to the uncorrected error has been cleared from the particular SoC fault aggregator. The method 550 then ends. The mailbox interrupt may be received by the processor 150 and used in decision block 547 (see FIG. 5B) in determining whether the processor 150 should clear the fault corresponding to the uncorrected error. The processor 150 may optionally read the fault information written by the processor 140 to the mailbox 156 before making this determination.
図5Dは、本開示のいくつかの実施例による、SI110(図1、図2、図4、図8、及び図10を参照)がSoC障害アグリゲータ信号を処理するために使用し得る方法580を示すフロー図である。ここで、図5Dを参照すると、本明細書に説明される方法580の各ブロックには、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組み合わせを使用して実行され得るコンピューティング・プロセスが含まれる。例えば、様々な機能は、メモリ(例えば、図1、図2、及び図4に示す揮発性メモリ146)に記憶された命令(例えば、図1、図2、及び図4に示す命令149)をプロセッサ(例えば、図1、図2、及び図4に示すプロセッサ140)が実行することによって実行され得る。方法580の少なくとも一部は、コンピュータ記憶媒体に記憶されたコンピュータ使用可能命令としても具体化され得る。方法580は、いくつか例を挙げると、スタンドアロン・アプリケーション、サービス又はホスト・サービス(スタンドアロン又は別のホスト・サービスとの組み合わせ)、又は別の製品へのプラグ・インによって提供され得る。また、方法580は、例として、図1の車載プラットフォーム100に関して説明される。しかしながら、方法580は、加えて又は或いは、任意の1つのシステム、又は本明細書で説明されているものを含むが、これらに限定されないシステムの任意の組み合わせによって実行され得る。 FIG. 5D is a flow diagram illustrating a method 580 that the SI 110 (see FIGS. 1, 2, 4, 8, and 10) may use to process a SoC fault aggregator signal, according to some embodiments of the present disclosure. Now, referring to FIG. 5D, each block of the method 580 described herein includes a computing process that may be performed using any combination of hardware, firmware, and/or software. For example, various functions may be performed by a processor (e.g., processor 140 shown in FIGS. 1, 2, and 4) executing instructions (e.g., instructions 149 shown in FIGS. 1, 2, and 4) stored in a memory (e.g., volatile memory 146 shown in FIGS. 1, 2, and 4). At least a portion of the method 580 may also be embodied as computer usable instructions stored on a computer storage medium. The method 580 may be provided by a standalone application, a service or a host service (standalone or in combination with another host service), or a plug-in to another product, to name a few examples. Also, the method 580 is described with respect to the vehicle-mounted platform 100 of FIG. 1 as an example. However, the method 580 may additionally or alternatively be performed by any one system or any combination of systems, including but not limited to those described herein.
説明を容易にするために、方法580は、SI障害アグリゲータ142(図1、図2、及び図4を参照)、プロセッサ140(図1、図2、及び図4)、及びSoCエラー処理回路422(図4を参照)によって実行されているものとして説明する。SoCエラー処理回路422は、SI障害アグリゲータ142のコンポーネントとして実装され得る。図5Dを参照すると、第1のブロック582において、SI障害アグリゲータ142(図1、図2、及び図4を参照)は、ステータス・ビット「BT3」を設定するSoC障害アグリゲータ信号を受信する。 For ease of explanation, the method 580 is described as being performed by the SI fault aggregator 142 (see FIGS. 1, 2, and 4), the processor 140 (see FIGS. 1, 2, and 4), and the SoC error handling circuit 422 (see FIG. 4). The SoC error handling circuit 422 may be implemented as a component of the SI fault aggregator 142. Referring to FIG. 5D, in a first block 582, the SI fault aggregator 142 (see FIGS. 1, 2, and 4) receives a SoC fault aggregator signal that sets a status bit "BT3".
図5Dに破線の矢印で示すように、SI障害アグリゲータ142(図1、図2、及び図4を参照)がSoC障害アグリゲータ信号を受信すると、SI110のSoCエラー処理回路422(図4を参照)は、自動的にブロック584に進み、SoCエラーを含むSoCエラー信号を外部システム404(図4を参照)に接続406(図4を参照)経由で自動的に送信することができる。或いは、SoCエラー処理回路422は、ブロック586に進み、SoC障害タイマ424(図4を参照)を開始することもできる。SoC障害タイマ424は、SoC障害アグリゲータ信号が受信されるときと外部システム404が通知されるときとの間に遅延を発生させることがある。SoC障害タイマ424が実行している最中に、プロセッサ140は1つ又は複数の訂正措置を行うことができる。訂正措置が成功した場合、プロセッサ140はステータス・ビット「BT2」の設定を解除することによって訂正されていないエラーをクリアし、ステータス・ビット「BT3」の設定を解除することによってSoC障害アグリゲータ・エラーをクリアすることができる。SoC障害アグリゲータ・エラーをクリアすると、SoC障害タイマ424が停止する。プロセッサ140がSI障害アグリゲータ142から訂正されていないエラーをクリアする前に、プロセッサ140は、訂正されていないエラーに対応する障害が特定のSoC障害アグリゲータからクリアされたというプロセッサ150からの通知を待機してもよい。 As shown by the dashed arrow in FIG. 5D, when the SI fault aggregator 142 (see FIGS. 1, 2, and 4) receives the SoC fault aggregator signal, the SoC error handling circuit 422 (see FIG. 4) of the SI 110 may automatically proceed to block 584 and automatically transmit a SoC error signal including the SoC error to the external system 404 (see FIG. 4) via the connection 406 (see FIG. 4). Alternatively, the SoC error handling circuit 422 may proceed to block 586 and start the SoC fault timer 424 (see FIG. 4). The SoC fault timer 424 may cause a delay between when the SoC fault aggregator signal is received and when the external system 404 is notified. While the SoC fault timer 424 is running, the processor 140 may take one or more corrective actions. If the corrective action is successful, processor 140 may clear the uncorrected error by unsetting status bit "BT2" and clear the SoC fault aggregator error by unsetting status bit "BT3". Clearing the SoC fault aggregator error stops SoC fault timer 424. Before processor 140 clears the uncorrected error from SI fault aggregator 142, processor 140 may wait for notification from processor 150 that the fault corresponding to the uncorrected error has been cleared from the particular SoC fault aggregator.
SoC障害タイマ424が開始された後、判断ブロック588では、SoCエラー処理回路422は、SoC障害タイマ424が第4の所定の時間を超えて経過したことを示すかどうかを判断する。SoC障害タイマ424が、第4の所定の時間を超えて経過していて、SoC障害アグリゲータ・エラーがクリアされていないことを示す場合、判断ブロック588の判断は「はい」である。一方、SoC障害タイマ424が第4の所定の時間が超えて経過したことを示す前に、SoC障害アグリゲータ・エラーがクリアされると、判断ブロック588の判断は「いいえ」である。 After the SoC fault timer 424 is started, in decision block 588, the SoC error processing circuit 422 determines whether the SoC fault timer 424 indicates that the fourth predetermined time has elapsed. If the SoC fault timer 424 indicates that the fourth predetermined time has elapsed and the SoC fault aggregator error has not been cleared, the determination in decision block 588 is "yes." On the other hand, if the SoC fault aggregator error is cleared before the SoC fault timer 424 indicates that the fourth predetermined time has elapsed, the determination in decision block 588 is "no."
判断ブロック588の判断が「いいえ」の場合、ブロック590では、SoCエラー処理回路422は、第4の所定の時間を超えて経過したことをSoC障害タイマ424が示すのを待機する。一方、ブロック588の判断が「はい」の場合、ブロック584では、SoCエラー処理回路422は、接続406(図4を参照)経由で、第1の訂正されていないエラーがクリアされておらず、SoC障害アグリゲータ・エラーがアサートされていることを示す、SoCエラーを含むSoCエラー信号を外部システム404(図4を参照)に送信する。SoC障害タイマ424は、SoCエラーが送られると自動的に停止する及び/又はリセットされる。或いは、SoCエラー処理回路422がSoC障害タイマ424をリセットする場合があり、また、SoC障害タイマ424が、SoCエラー処理回路422が何の措置も行わないで、単に期限切れになる場合もある。 If the determination at decision block 588 is "no," then at block 590 the SoC error handling circuit 422 waits for the SoC fault timer 424 to indicate that the fourth predetermined time has elapsed. On the other hand, if the determination at block 588 is "yes," then at block 584 the SoC error handling circuit 422 transmits a SoC error signal via connection 406 (see FIG. 4) to the external system 404 (see FIG. 4) including a SoC error indicating that the first uncorrected error has not been cleared and that the SoC fault aggregator error is asserted. The SoC fault timer 424 may automatically stop and/or reset when the SoC error is sent. Alternatively, the SoC error handling circuit 422 may reset the SoC fault timer 424, or the SoC fault timer 424 may simply expire without the SoC error handling circuit 422 taking any action.
SI障害アグリゲータ142(図1、図2、及び図4を参照)がSoC障害アグリゲータ信号を受信した後、ブロック592では、SI障害アグリゲータ142はプロセッサ140に割り込みを送る場合がある。ブロック594では、プロセッサ140が第1の訂正されていないエラーをトリアージする。判断ブロック595では、プロセッサ140は、1つ又は複数の訂正措置を行うかどうかを判断する。プロセッサ140が1つ又は複数の訂正措置を行うと判断した場合、判断ブロック595の判断は「はい」である。それ以外の場合、判断ブロック595の判断は「いいえ」である。判断ブロック595の判断が「いいえ」の場合、プロセッサ140はブロック596に進み、措置は行わない。一方、判断ブロック595の判断が「はい」の場合、ブロック597では、プロセッサ140は訂正措置を行う。 After the SI fault aggregator 142 (see FIGS. 1, 2, and 4) receives the SoC fault aggregator signal, in block 592, the SI fault aggregator 142 may send an interrupt to the processor 140. In block 594, the processor 140 triages the first uncorrected error. In decision block 595, the processor 140 determines whether to take one or more corrective actions. If the processor 140 determines to take one or more corrective actions, the decision in decision block 595 is "yes." Otherwise, the decision in decision block 595 is "no." If the decision in decision block 595 is "no," the processor 140 proceeds to block 596 and takes no action. On the other hand, if the decision in decision block 595 is "yes," in block 597, the processor 140 takes corrective actions.
次に、ブロック598では、プロセッサ140は、メールボックス156にメールボックス割り込みを送る、及び/又は例えば、ステータス・ビット「BT3」の設定を解除することによってSoC障害アグリゲータ・エラーをクリアし、ステータス・ビット「BT2」の設定を解除することによって訂正されていないエラーをクリアする。SoC障害アグリゲータ・エラーをクリアすると、SoC障害タイマ424が停止する。メールボックス156に送られたメールボックス割り込みは、訂正されていないエラーがクリアされたこと、及び/又はプロセッサ140がブロック597で訂正措置を行ったことを示し得る。任意選択で、プロセッサ140は、障害情報をメールボックス156に書き込むことができる。プロセッサ140がSI障害アグリゲータ142からSoC障害アグリゲータ・エラー及び訂正されていないエラーをクリアする前に、プロセッサ140は、訂正されていないエラーに対応する障害が特定のSoC障害アグリゲータからクリアされたというプロセッサ150からの通知を待機してもよい。その後、方法580は終了する。メールボックス割り込みはプロセッサ150によって受信され、プロセッサ150は、訂正されていないエラーに対応する障害をクリアすることができる。プロセッサ150は、任意選択で、障害をクリアする前にプロセッサ140によってメールボックス156に書き込まれた障害情報を読み取ることができる。 Next, in block 598, the processor 140 sends a mailbox interrupt to the mailbox 156 and/or clears the SoC fault aggregator error, for example by unsetting the status bit "BT3" and clearing the uncorrected error by unsetting the status bit "BT2". Clearing the SoC fault aggregator error stops the SoC fault timer 424. The mailbox interrupt sent to the mailbox 156 may indicate that the uncorrected error has been cleared and/or that the processor 140 has taken corrective action in block 597. Optionally, the processor 140 may write the fault information to the mailbox 156. Before the processor 140 clears the SoC fault aggregator error and the uncorrected error from the SI fault aggregator 142, the processor 140 may wait for notification from the processor 150 that the fault corresponding to the uncorrected error has been cleared from the particular SoC fault aggregator. The method 580 then ends. The mailbox interrupt is received by processor 150, which can clear the fault corresponding to the uncorrected error. Processor 150 can optionally read the fault information written by processor 140 to mailbox 156 before clearing the fault.
図5A~図5Dでは、車載SoC104にはプロセッサ150が含まれている。少なくともいくつかの実施例では、プロセッサ150は省略されてもよい。このような実施例では、方法540は実行されない。各障害について、特定のSoC障害アグリゲータがSoC障害アグリゲータ・エラーを生成してSI障害アグリゲータ142に送る(ブロック518及びブロック532)。プロセッサ150が存在しないため、メールボックス割り込みは、割り込みコントローラ141に送信されず、したがって、プロセッサ140はプロセッサ140が動作する前にSoC障害アグリゲータ信号を待機する(図5Cのブロック558)。次に、SoC障害アグリゲータ・エラーが受信される(図5Dのブロック582)と、SI110は、方法550(図5Cを参照)で受信された訂正されたエラー及び訂正されていないエラー毎にトリアージを行う(図5Dのブロック594)ために、他のコンポーネント160に進出する。トリアージが成功した場合、プロセッサ140は訂正措置を行う(図5Dのブロック597)。一方、トリアージに失敗した場合、プロセッサ140は措置を行わない(図5Dのブロック596)。これにより、SoC障害タイマ424の期限が切れた後、SoCエラー処理回路422は(ソフトウェアの介入なしで)SoCエラーを送る(図5Dのブロック584)。SoCエラーは、外部システム404(例えば、任意選択の外部制御ユニット106、1つ又は複数の外部マイクロコントローラ、1つ又は複数の外部エージェントなど)に通知し、外部システム404が車載プラットフォーム100(図1を参照)を安全な状態に戻すことを可能にする。 5A-5D, the vehicle SoC 104 includes a processor 150. In at least some embodiments, the processor 150 may be omitted. In such embodiments, the method 540 is not performed. For each fault, the particular SoC fault aggregator generates and sends a SoC fault aggregator error to the SI fault aggregator 142 (blocks 518 and 532). Since the processor 150 is not present, a mailbox interrupt is not sent to the interrupt controller 141, and thus the processor 140 waits for a SoC fault aggregator signal before the processor 140 operates (block 558 of FIG. 5C). Then, when a SoC fault aggregator error is received (block 582 of FIG. 5D), the SI 110 goes to other components 160 to triage (block 594 of FIG. 5D) each corrected and uncorrected error received in the method 550 (see FIG. 5C). If the triage is successful, the processor 140 takes corrective action (block 597 of FIG. 5D). On the other hand, if the triage is unsuccessful, the processor 140 takes no action (block 596 of FIG. 5D). This causes the SoC error handling circuit 422 to send a SoC error (without software intervention) (block 584 of FIG. 5D) after the SoC fault timer 424 expires. The SoC error is notified to the external system 404 (e.g., the optional external control unit 106, one or more external microcontrollers, one or more external agents, etc.), allowing the external system 404 to return the vehicle platform 100 (see FIG. 1) to a safe state.
図6A~図6Cは、SI110が訂正されたエラー信号、訂正されていないエラー信号、又はSoC障害アグリゲータ信号のうちの少なくとも1つによって特定の障害を通知された場合に、SI110が行い得る措置の例を示している。図6Aは、本開示のいくつかの実施例による、シビアリティの低い訂正されていないエラー(例えば、最小値)がアサートされた後に、プロセッサ140によって送受信される信号の信号タイミング図の例を示している。図6Aの線612A~618Aは、それぞれ、訂正されていないエラー信号、メールボックス割り込み信号、SoC障害アグリゲーション信号、及びSoCエラー信号を表している。訂正されていないエラー信号、メールボックス割り込み信号、SoC障害アグリゲーション信号、及びSoCエラー信号は、線610Aで表されるクロック信号と同期されている。線610Aで表されるクロック信号は、SIドメイン内の第2の(SI)クロック114(図1を参照)に基づいて生成されている。 6A-6C show example actions that the SI 110 may take when the SI 110 is notified of a particular fault by at least one of a corrected error signal, an uncorrected error signal, or a SoC fault aggregator signal. FIG. 6A shows an example signal timing diagram of signals transmitted and received by the processor 140 after a low severity uncorrected error (e.g., minimum value) is asserted, according to some embodiments of the present disclosure. Lines 612A-618A in FIG. 6A represent the uncorrected error signal, the mailbox interrupt signal, the SoC fault aggregation signal, and the SoC error signal, respectively. The uncorrected error signal, the mailbox interrupt signal, the SoC fault aggregation signal, and the SoC error signal are synchronized with a clock signal represented by line 610A. The clock signal represented by line 610A is generated based on a second (SI) clock 114 (see FIG. 1) in the SI domain.
線612Aは、訂正されていないエラー信号導体412(図4を参照)によってSI障害アグリゲータ142に導かれた訂正されていないエラー信号を表す。線612Aの一部分622Aは、訂正されていないエラーのアサートを表す。訂正されていないエラー信号を受信した後(例えば、図5Cのブロック552)、SI障害アグリゲータ142はプロセッサ140に割り込みを送る(例えば、図5Cのブロック566)。 Line 612A represents an uncorrected error signal conducted by uncorrected error signal conductor 412 (see FIG. 4) to SI fault aggregator 142. A portion 622A of line 612A represents an assertion of an uncorrected error. After receiving the uncorrected error signal (e.g., block 552 of FIG. 5C), SI fault aggregator 142 sends an interrupt to processor 140 (e.g., block 566 of FIG. 5C).
次に、図6Aでは、割り込みコントローラ141がメールボックス割り込みを受信する(図5Cの判断ブロック568の判断が「はい」である)。線614Aの一部分626Aは、訂正されていないエラーのシビアリティを示すメールボックス割り込み(プロセッサ150によって送られる)を表す。メールボックス割り込みは、特定の障害のシビアリティが低いことを示しているため、プロセッサ140はメールボックス156にアクセスすると判断して(例えば、図5Cの判断ブロック570の判断が「はい」である)、メールボックス156の内容を読み取る(例えば、図5Cのブロック572)。メールボックス156に、特定の障害がクリアされたことを示す障害情報(プロセッサ150によって作成される)が含まれている場合、プロセッサ140はSI障害アグリゲータ142内の特定の障害をクリアする(例えば、図5Cのブロック578)。訂正されたエラー・タイマ420Uが期限切れになる前にこれが起きた場合、SoC障害アグリゲータ152はSoC障害アグリゲータ・エラーをアサートしない(例えば、図5Aのブロック529)。 Next, in FIG. 6A, interrupt controller 141 receives a mailbox interrupt (decision block 568 of FIG. 5C is determined to be "yes"). A portion 626A of line 614A represents a mailbox interrupt (sent by processor 150) indicating the severity of an uncorrected error. Because the mailbox interrupt indicates that the severity of the particular fault is low, processor 140 decides to access mailbox 156 (e.g., decision block 570 of FIG. 5C is determined to be "yes") and reads the contents of mailbox 156 (e.g., block 572 of FIG. 5C). If mailbox 156 contains fault information (created by processor 150) indicating that the particular fault has been cleared, processor 140 clears the particular fault in SI fault aggregator 142 (e.g., block 578 of FIG. 5C). If this occurs before the corrected error timer 420U expires, the SoC fault aggregator 152 does not assert a SoC fault aggregator error (e.g., block 529 of FIG. 5A).
一方、メールボックス156の内容が、プロセッサ150が特定の障害をクリアしたことを示していない場合、プロセッサ140は1つ又は複数の訂正措置を行うことを判断し得る(例えば、図5Cの判断ブロック573の判断が「はい」である)。(例えば、図5Cのブロック574で行われた)訂正措置が成功した場合、プロセッサ140はプロセッサ150にエラーをディアサートする(又は障害をクリアする)ように通知し得る。例えば、プロセッサ140はプロセッサ150にメールボックス割り込みを送るか、及び/又はメールボックス156に障害情報を書き込むことができる。プロセッサ150がこの通知を受信してエラーをディアサートした後、プロセッサ150はプロセッサ140にエラーがディアサートされたことを(例えば、訂正されていないエラー信号、メールボックス割り込み、及び/又はメールボックス156に記憶されている障害情報を介して)通知する。この通知を受信した後、プロセッサ140は、例えば、ステータス・ビット「BT2」の設定を解除することによってエラーをクリアすることができる(例えば、図5Cのブロック578)。線612Aの一部分624Aは、プロセッサ140がメールボックス156を読み取り、訂正措置を行った後の訂正されていないエラーのディアサートを表す。曲線矢印628Aは、プロセッサ140がメールボックス割り込みを受信したときと、プロセッサ140がエラーをディアサートした(又は障害をクリアした)ときとの間の遅延を表す。 On the other hand, if the contents of mailbox 156 do not indicate that processor 150 has cleared the particular fault, processor 140 may decide to take one or more corrective actions (e.g., a "yes" determination at decision block 573 of FIG. 5C). If the corrective action (e.g., taken at block 574 of FIG. 5C) is successful, processor 140 may notify processor 150 to deassert the error (or clear the fault). For example, processor 140 may send a mailbox interrupt to processor 150 and/or write fault information to mailbox 156. After processor 150 receives this notification and deasserts the error, processor 150 notifies processor 140 that the error has been deasserted (e.g., via an uncorrected error signal, a mailbox interrupt, and/or fault information stored in mailbox 156). After receiving this notification, processor 140 may clear the error by, for example, unsetting status bit "BT2" (e.g., block 578 of FIG. 5C). A portion 624A of line 612A represents the deassertion of the uncorrected error after processor 140 reads mailbox 156 and takes corrective action. Curved arrow 628A represents the delay between when processor 140 receives the mailbox interrupt and when processor 140 deasserts the error (or clears the fault).
訂正措置が成功すると、プロセッサ140はメールボックス156に、プロセッサ140が特定の障害をクリアしたことを示すメールボックス割り込みを送ることができる(例えば、図5Cのブロック578)。任意選択で、プロセッサ140は、障害情報をメールボックス156に書き込むことができる。プロセッサ150はメールボックス割り込みを受信し、特定の障害がプロセッサ140によって訂正されたと判定し(例えば、判断ブロック547の判断が「はい」である)、SoC障害アグリゲータ152から特定の障害をクリアする(例えば、図5Bのブロック549)。訂正されていないエラー・タイマ420Uが期限切れになる前にこれが起きた場合、SoC障害アグリゲータ152はSoC障害アグリゲータ・エラーをアサートしない(例えば、図5Aのブロック529)。したがって、SoC障害アグリゲータ152は、特定の障害をモニタリングして、プロセッサ140及び150のうちの1つによって処理したことを確実にし、訂正されていないエラー・タイマ420Uが期限切れになる前に特定の障害がクリアされていないときは、SoC障害アグリゲータ152は、SoCエラー処理回路422に通知する。前述のように、プロセッサ150がエラーをディアサートした後、プロセッサ150はプロセッサ140にエラーがディアサートされたことを(例えば、訂正されていないエラー信号、メールボックス割り込み、及び/又はメールボックス156に記憶されている障害情報を介して)通知し、プロセッサ140はSI障害アグリゲータ142内のエラーをクリアすることができる。 If the corrective action is successful, the processor 140 may send a mailbox interrupt to the mailbox 156 indicating that the processor 140 has cleared the particular fault (e.g., block 578 of FIG. 5C). Optionally, the processor 140 may write the fault information to the mailbox 156. The processor 150 receives the mailbox interrupt, determines that the particular fault has been corrected by the processor 140 (e.g., the determination of decision block 547 is "yes"), and clears the particular fault from the SoC fault aggregator 152 (e.g., block 549 of FIG. 5B). If this occurs before the uncorrected error timer 420U expires, the SoC fault aggregator 152 does not assert a SoC fault aggregator error (e.g., block 529 of FIG. 5A). Thus, the SoC fault aggregator 152 monitors a particular fault to ensure that it has been handled by one of the processors 140 and 150, and when the particular fault has not been cleared before the uncorrected error timer 420U expires, the SoC fault aggregator 152 notifies the SoC error handling circuit 422. As described above, after the processor 150 deasserts the error, the processor 150 notifies the processor 140 that the error has been deasserted (e.g., via an uncorrected error signal, a mailbox interrupt, and/or fault information stored in the mailbox 156), and the processor 140 can clear the error in the SI fault aggregator 142.
線616AはSoC障害アグリゲーション信号を表し、SoC障害アグリゲーション・エラーがアサートされなかったことを示す。したがって、訂正されていないエラー・タイマ420Uが期限切れになる前に、訂正されていない障害がクリアされた。 Line 616A represents the SoC fault aggregation signal, indicating that the SoC fault aggregation error was not asserted. Thus, the uncorrected fault was cleared before the uncorrected error timer 420U expired.
線618Aは、接続406経由で外部システム404(例えば、任意選択の外部制御ユニット106、1つ又は複数の外部マイクロコントローラ、1つ又は複数の外部エージェントなど)に送られ得るSoCエラー信号を表す。訂正されていないエラーは処理され、SoC障害アグリゲーション・エラーがアサートされなかったため、線618AはSI110が訂正されていないエラーを外部システム404に通知しないことを示す(例えば、判断ブロック575の判断が「いいえ」である)。 Line 618A represents a SoC error signal that may be sent to external system 404 (e.g., optional external control unit 106, one or more external microcontrollers, one or more external agents, etc.) via connection 406. Because the uncorrected error was handled and the SoC fault aggregation error was not asserted, line 618A indicates that SI 110 does not notify external system 404 of the uncorrected error (e.g., decision block 575 is "no").
図6Bは、本開示のいくつかの実施例による、シビアリティの高い訂正されていないエラー(例えば、最大値)がアサートされた後に、プロセッサ140によって送受信される信号の信号タイミング図の例を示している。図6Bの線612B~618Bは、それぞれ、訂正されていないエラー信号、メールボックス割り込み信号、SoC障害アグリゲーション信号、及びSoCエラー信号を表している。訂正されていないエラー信号、メールボックス割り込み信号、SoC障害アグリゲーション信号、及びSoCエラー信号は、線610Bで表されるクロック信号と同期されている。線610Bで表されるクロック信号は、SIドメイン内の第2の(SI)クロック114(図1を参照)に基づいて生成されている。 FIG. 6B illustrates an example signal timing diagram of signals transmitted and received by processor 140 after a high severity uncorrected error (e.g., maximum value) is asserted, according to some embodiments of the present disclosure. Lines 612B-618B in FIG. 6B represent an uncorrected error signal, a mailbox interrupt signal, a SoC fault aggregation signal, and a SoC error signal, respectively. The uncorrected error signal, the mailbox interrupt signal, the SoC fault aggregation signal, and the SoC error signal are synchronized with a clock signal represented by line 610B. The clock signal represented by line 610B is generated based on a second (SI) clock 114 (see FIG. 1) in the SI domain.
線612Bは、訂正されていないエラー信号導体412(図4を参照)によってSI障害アグリゲータ142に導かれた訂正されていないエラー信号を表す。線612Bの一部分622Bは、訂正されていないエラーのアサートを表す。訂正されていないエラー信号を受信した後(例えば、図5Cのブロック552)、SI障害アグリゲータ142はプロセッサ140に割り込みを送る(例えば、図5Cのブロック566)。 Line 612B represents an uncorrected error signal conducted by uncorrected error signal conductor 412 (see FIG. 4) to SI fault aggregator 142. A portion 622B of line 612B represents an assertion of an uncorrected error. After receiving the uncorrected error signal (e.g., block 552 of FIG. 5C), SI fault aggregator 142 sends an interrupt to processor 140 (e.g., block 566 of FIG. 5C).
次に、図6Bでは、割り込みコントローラ141がメールボックス割り込みを受信する(例えば、図5Cの判断ブロック568の判断が「はい」である)。線614Bの一部分624Bは、メールボックス割り込みを表し、これは、第1の訂正されていないエラーが高いシビアリティ(例えば、7)を有することを示す。メールボックス割り込みは、特定の障害のシビアリティが高いことを示しているため、プロセッサ140はメールボックス156にアクセスしないと判断する(例えば、図5Cの判断ブロック570の判断が「いいえ」である)。例えば、プロセッサ140は、車載SoC104の他のコンポーネント160にアクセスするのは危険すぎて、それを行うとSI110に悪影響を及ぼす可能性があると判定することがある。図6Bでは、プロセッサ140はまた、1つ又は複数の訂正措置を行わないと判断する(例えば、図5Cの判断ブロック573の判断が「いいえ」である)。図6Bでは、SI110が1つ又は複数の訂正措置を行うことができないため、訂正されていないエラーはディアサートされていない。 Next, in FIG. 6B, the interrupt controller 141 receives a mailbox interrupt (e.g., decision block 568 of FIG. 5C is determined to be "yes"). A portion 624B of the line 614B represents the mailbox interrupt, which indicates that the first uncorrected error has a high severity (e.g., 7). Because the mailbox interrupt indicates a high severity of the particular fault, the processor 140 determines not to access the mailbox 156 (e.g., decision block 570 of FIG. 5C is determined to be "no"). For example, the processor 140 may determine that it is too dangerous to access other components 160 of the vehicle SoC 104, and doing so may adversely affect the SI 110. In FIG. 6B, the processor 140 also determines not to take one or more corrective actions (e.g., decision block 573 of FIG. 5C is determined to be "no"). In FIG. 6B, the uncorrected error is not deasserted because the SI 110 is unable to take one or more corrective actions.
しかしながら、プロセッサ140はSoCエラー信号でSoCエラーを送ることにより、外部システム404(図4を参照)に通知すると判断する(例えば、図5Cの判断ブロック575の判断が「はい」である)。次に、プロセッサ140は、SoCエラー信号を送る(例えば、図5Cのブロック576)。したがって、図6Bでは、障害のシビアリティが高い場合(例えば、最大値)、SI110は車載SoC104にアクセスしない、訂正措置を行わない、そして、代わりに外部システム404を通知すると判断し得る。線618BはSI110によって外部システム404に送られるSoCエラー信号を表し、線618Bの一部分626BはSoCエラーのアサートを表す。線616BはSoC障害アグリゲーション信号を表し、SoC障害アグリゲーション・エラーがアサートされていることをまだ示していない。したがって、SI110は訂正されていないエラーが処理されていないことを認識し、SoC障害アグリゲーション・エラーがアサートされる前に外部システム404に通知することを判断する。 However, the processor 140 decides to notify the external system 404 (see FIG. 4) by sending a SoC error in the SoC error signal (e.g., decision block 575 of FIG. 5C is "yes"). The processor 140 then sends the SoC error signal (e.g., block 576 of FIG. 5C). Thus, in FIG. 6B, if the severity of the fault is high (e.g., maximum), the SI 110 may decide not to access the vehicle SoC 104, not to take corrective action, and instead notify the external system 404. Line 618B represents the SoC error signal sent by the SI 110 to the external system 404, and a portion 626B of line 618B represents the assertion of the SoC error. Line 616B represents the SoC fault aggregation signal, not yet indicating that the SoC fault aggregation error is asserted. Thus, the SI 110 recognizes that an uncorrected error is not being handled and decides to notify the external system 404 before the SoC fault aggregation error is asserted.
図6Cは、本開示のいくつかの実施例による、訂正されていないエラー(例えば、最大値)がアサートされた後であるが、SI110はメールボックス割り込みを受信していない、プロセッサ140によって送受信される信号の信号タイミング図の例を示す。図6Cの線612C~618Cは、それぞれ、訂正されていないエラー信号、メールボックス割り込み信号、SoC障害アグリゲーション信号、及びSoCエラー信号を表している。訂正されていないエラー信号、メールボックス割り込み信号、SoC障害アグリゲーション信号、及びSoCエラー信号は、線610Cで表されるクロック信号と同期されている。線610Cで表されるクロック信号は、SIドメイン内の第2の(SI)クロック114(図1を参照)に基づいて生成されている。 FIG. 6C illustrates an example signal timing diagram of signals transmitted and received by the processor 140 after an uncorrected error (e.g., maximum value) is asserted, but the SI 110 has not received a mailbox interrupt, according to some embodiments of the present disclosure. Lines 612C-618C in FIG. 6C represent the uncorrected error signal, the mailbox interrupt signal, the SoC fault aggregation signal, and the SoC error signal, respectively. The uncorrected error signal, the mailbox interrupt signal, the SoC fault aggregation signal, and the SoC error signal are synchronized with a clock signal represented by line 610C. The clock signal represented by line 610C is generated based on a second (SI) clock 114 (see FIG. 1) in the SI domain.
線612Cは、訂正されていないエラー信号導体412(図4を参照)によってSI障害アグリゲータ142に導かれた訂正されていないエラー信号を表す。線612Cの一部分622Cは、訂正されていないエラーのアサートを表す。訂正されていないエラー信号を受信した後(例えば、図5Cのブロック552)、SI障害アグリゲータ142はプロセッサ140に割り込みを送る(例えば、図5Cのブロック566)。 Line 612C represents an uncorrected error signal conducted by uncorrected error signal conductor 412 (see FIG. 4) to SI fault aggregator 142. A portion 622C of line 612C represents an assertion of an uncorrected error. After receiving the uncorrected error signal (e.g., block 552 of FIG. 5C), SI fault aggregator 142 sends an interrupt to processor 140 (e.g., block 566 of FIG. 5C).
図6Cでは、線614Cはメールボックス割り込みを受信したことを示していない。したがって、この例では、割り込みコントローラ141はメールボックス割り込みを受信しない(例えば、図5Cの判断ブロック568の判断が「いいえ」である)。これは、例えば、プロセッサ150が訂正されていないエラーのトリアージを完了できず(例えば、図5Bのブロック542)、プロセッサ150がメールボックス割り込みを送ることができない(図5Cの判断ブロック543の判断が「はい」である)場合に起こる可能性がある(例えば、図5Bのブロック544)。したがって、プロセッサ140は、メールボックス割り込み又はSoC障害アグリゲータ・エラーのいずれかを、いずれか最初に発生したものを受信するのを待機する(例えば、図5Cのブロック558)。 In FIG. 6C, line 614C does not indicate that a mailbox interrupt has been received. Thus, in this example, interrupt controller 141 does not receive a mailbox interrupt (e.g., decision block 568 of FIG. 5C is determined to be "no"). This may occur, for example, if processor 150 is unable to complete triage of the uncorrected error (e.g., block 542 of FIG. 5B) and processor 150 is unable to send a mailbox interrupt (decision block 543 of FIG. 5C is determined to be "yes") (e.g., block 544 of FIG. 5B). Thus, processor 140 waits to receive either a mailbox interrupt or a SoC fault aggregator error, whichever occurs first (e.g., block 558 of FIG. 5C).
線628Cは、第3の所定の時間を表し、訂正されていないエラー・タイマ420Uが期限切れになったことを示す。プロセッサ140もプロセッサ150も第1の訂正されていないエラーをクリアできなかったため、訂正されていないエラー・タイマ420Uは期限切れになることができる(例えば、図5Aの判断ブロック530の判断は「はい」である)。これにより、訂正されていないエラー信号をSI110に送り、割り込みをプロセッサ150に送ったSoC障害アグリゲータ152のうちの特定の1つが、SoC障害アグリゲータ信号をSoC障害アグリゲータ信号導体414を介してSI障害アグリゲータ142に送信する(例えば、図5Aのブロック532)。SI障害アグリゲータ142は、SoC障害アグリゲータ信号を受信する(例えば、図5Dのブロック582)。線616Cの一部分624Cは、特定のSoC障害アグリゲータによってSI110に送られるSI障害アグリゲータ・エラーを表す。曲線矢印630Cは、SI110が訂正されていないエラーを受信したときと、SI110がSI障害アグリゲータ・エラーを受信したときとの間の遅延を表す。 Line 628C represents a third predetermined time and indicates that the uncorrected error timer 420U has expired. The uncorrected error timer 420U can expire because neither the processor 140 nor the processor 150 was able to clear the first uncorrected error (e.g., the determination of decision block 530 of FIG. 5A is "yes"). This causes the particular one of the SoC fault aggregators 152 that sent the uncorrected error signal to the SI 110 and the interrupt to the processor 150 to send a SoC fault aggregator signal to the SI fault aggregator 142 via the SoC fault aggregator signal conductor 414 (e.g., block 532 of FIG. 5A). The SI fault aggregator 142 receives the SoC fault aggregator signal (e.g., block 582 of FIG. 5D). A portion 624C of line 616C represents an SI fault aggregator error sent by a particular SoC fault aggregator to SI 110. Curved arrow 630C represents the delay between when SI 110 receives the uncorrected error and when SI 110 receives the SI fault aggregator error.
SI障害アグリゲータ信号を受信した後(例えば、図5Dのブロック582)、SI障害アグリゲータ142はプロセッサ140に割り込みを送る(例えば、図5Dのブロック592)。次に、プロセッサ140は、第1の訂正されていないエラーをトリアージして(例えば、図5Dのブロック594)、訂正措置を行うかどうかを判断することができる。プロセッサ140が訂正措置を行うことができない場合(例えば、図5Dの判断ブロック595の判断が「いいえ」である)、SoCエラー処理回路422はSoCエラー信号を外部システム404に送る(例えば、図5Cのブロック584)。線612Cの一部分626Cは、外部システム404に送られたSoCエラーを表す。SoC障害タイマ424を使用する実施例では、SoC障害タイマ424が期限切れになるとSoCエラーが送られる。図6Cでは、線632Cは、第4の所定の時間を超えて経過したことを示している。これは、SoC障害タイマ424の期限が切れたことを意味する。曲線矢印634Cは、SI110がSI障害アグリゲータ・エラーを受信したときと、SI110がSoCエラーをアサートしたときとの間の遅延を表す。したがって、SI110内のハードウェアは外部システム404に通知し、外部システム404は、車載プラットフォーム100を安全な状態に戻すことを試みる。 After receiving the SI fault aggregator signal (e.g., block 582 of FIG. 5D), the SI fault aggregator 142 sends an interrupt to the processor 140 (e.g., block 592 of FIG. 5D). The processor 140 may then triage the first uncorrected error (e.g., block 594 of FIG. 5D) to determine whether to take corrective action. If the processor 140 is unable to take corrective action (e.g., a "no" determination at decision block 595 of FIG. 5D), the SoC error handling circuit 422 sends a SoC error signal to the external system 404 (e.g., block 584 of FIG. 5C). A portion 626C of the line 612C represents the SoC error sent to the external system 404. In an embodiment using the SoC fault timer 424, the SoC error is sent when the SoC fault timer 424 expires. In FIG. 6C, the line 632C indicates that a fourth predetermined time has elapsed. This means that the SoC fault timer 424 has expired. The curved arrow 634C represents the delay between when the SI 110 receives the SI fault aggregator error and when the SI 110 asserts the SoC error. Thus, the hardware in the SI 110 notifies the external system 404, which attempts to return the vehicle platform 100 to a safe state.
図2を参照すると、前述のように、SI110と車載SoC104の他のコンポーネント160とは、揮発性メモリ126を共有している。しかし、SI110は第1のリスク分類レベル内で動作し、車載SoC104の他のコンポーネント160は、より低い第2のリスク分類レベル内で動作する可能性がある。例えば、SI110はASIL-Dで動作するが、揮発性メモリ126及びSI110と揮発性メモリ126との間の通信パス(例えば、インターコネクト、メモリ・コントローラなど)を含む車載SoCの他のコンポーネントはASIL-Bで動作する場合がある。 Referring to FIG. 2, as previously described, SI 110 and other components 160 of the automotive SoC 104 share the volatile memory 126. However, SI 110 may operate within a first risk classification level, while other components 160 of the automotive SoC 104 operate within a lower, second risk classification level. For example, SI 110 may operate in ASIL-D, while other components of the automotive SoC, including volatile memory 126 and the communication paths between SI 110 and volatile memory 126 (e.g., interconnect, memory controller, etc.), may operate in ASIL-B.
SI110が揮発性メモリ126を車載SoC104の他のコンポーネント160と共有できるようにするために、SI110による排他的な使用のために、別個の専用メモリ領域(「カーブアウト部」250と呼ばれる)が揮発性メモリ126に作成される。カーブアウト部250は、メインCPUコンプレックス120(図1を参照)によって実行されるメモリ管理ソフトウェア(例えば、リッチOSメモリ管理リッチOSメモリ管理ソフトウェア)からは見えない場合がある。カーブアウト部250は、ブート時に作成及び構成することができ、所与のブート・サイクルの間、SI110専用のままにしておくことができる。例えば、カーブアウト部250のサイズは、カーブアウト部250を構成するために(例えば、メインCPUコンプレックス120によって実行される)ソフトウェアによって使用される、ユーザが編集可能なソフトウェア・パラメータによって判断することができる。カーブアウト部250は、第1のサブセクション252(図8を参照)と第2のサブセクション254(図8を参照)とに分けることができる。SI110は、第1のリスク分類レベルで動作する通信パスを介してカーブアウト部250にアクセスでき、その通信パスを介したSI110によるカーブアウト部250への任意のアクセスは、以下に説明するようなセキュリティ許可チェックを受けることになり得る。 To allow the SI 110 to share the volatile memory 126 with other components 160 of the on-board SoC 104, a separate dedicated memory area (called a "carve-out" 250) is created in the volatile memory 126 for exclusive use by the SI 110. The carve-out 250 may be invisible to memory management software (e.g., Rich OS memory management software) executed by the main CPU complex 120 (see FIG. 1). The carve-out 250 may be created and configured at boot time and may remain dedicated to the SI 110 for a given boot cycle. For example, the size of the carve-out 250 may be determined by a user-editable software parameter used by software (e.g., executed by the main CPU complex 120) to configure the carve-out 250. The carve-out 250 may be divided into a first subsection 252 (see FIG. 8) and a second subsection 254 (see FIG. 8). SI 110 may access carve-out portion 250 via a communication path operating at a first risk classification level, and any access by SI 110 to carve-out portion 250 via that communication path may be subject to security authorization checks as described below.
SI110にはエラー検出ブロック272が含まれている。このブロックには、SI110の他のコンポーネントとカーブアウト部250との間に配置されたハードウェアが含まれている。したがって、エラー検出ブロック272は揮発性メモリ・インターフェース200Aのコンポーネントとして実装され得る。或いは、エラー検出ブロック272は、プロセッサ140と揮発性メモリ・インターフェース200Aとの間に配置されてもよい。このような実施例では、1つ又は複数の信号導体(例えば、ワイヤ、信号トレースなど)がエラー検出ブロック272を、プロセッサ140及び揮発性メモリ・インターフェース200Aの各々に接続することができる。 SI 110 includes an error detection block 272. This block includes hardware that is disposed between other components of SI 110 and carve-out portion 250. Thus, error detection block 272 may be implemented as a component of volatile memory interface 200A. Alternatively, error detection block 272 may be disposed between processor 140 and volatile memory interface 200A. In such an embodiment, one or more signal conductors (e.g., wires, signal traces, etc.) may connect error detection block 272 to each of processor 140 and volatile memory interface 200A.
エラー検出ブロック272のハードウェアには、コード生成サブブロック273(図8を参照)が含まれている場合がある。コード生成サブブロック273は、周期的冗長検査(CRC:Cyclic Redundancy Check)コードを生成するCRCコード生成回路を使用して実装され得る。或いは、エラー検出ブロック272には、エラー訂正コード(ECC:Error Correction Code)など、異なるタイプのエラー検出コードを生成する他のタイプのコード生成回路が含まれていてもよい。エラー検出ブロック272のハードウェアは、エラー検出ブロック272を通過するデータに対して1つ又は複数のエラー検出コード(例えば、CRCコード)を判断する。例えば、エラー検出ブロック272は、エラー検出ブロック272を通過するデータの各バイト毎に別個のエラー検出コードを判断し得る。エラー検出コードは、バイトと、バイトが記憶されるカーブアウト部250のデータ・アドレスとに基づいて計算され得る。例えば、以下の式1を使用して、カーブアウト部250に書き込まれるデータの特定のバイトのエラー検出コードを判断することができる:
crc_outByte x=CRC(Byte Address,Byte Data) 式1
The hardware of the error detection block 272 may include a code generation sub-block 273 (see FIG. 8). The code generation sub-block 273 may be implemented using a Cyclic Redundancy Check (CRC) code generation circuit that generates a CRC code. Alternatively, the error detection block 272 may include other types of code generation circuitry that generates different types of error detection codes, such as an Error Correction Code (ECC). The hardware of the error detection block 272 determines one or more error detection codes (e.g., CRC codes) for data passing through the error detection block 272. For example, the error detection block 272 may determine a separate error detection code for each byte of data passing through the error detection block 272. The error detection code may be calculated based on the byte and the data address of the carve-out portion 250 where the byte is stored. For example, the following Equation 1 may be used to determine the error detection code for a particular byte of data being written to carve-out portion 250:
crc_out Byte x = CRC (Byte Address, Byte Data) Formula 1
上記の式1では、変数「crc_outByte x」は、変数「Byte Data」によって表されるバイトと、変数「Byte Address」によって表されるデータ・アドレスとに基づいて計算されるエラー検出コードを表す。式1では、関数「CRC」は、変数「Byte Data」及び「Byte Address」の値を入力として使用し、変数「crc_outByte x」の値を出力する。関数「CRC」の出力は、存在する場合、コード生成サブブロック273(図8を参照)によって少なくとも部分的に計算され得る。 In Equation 1 above, the variable "crc_out Byte x " represents an error detection code calculated based on the byte represented by the variable "Byte Data" and the data address represented by the variable "Byte Address". In Equation 1, the function "CRC" uses the values of the variables "Byte Data" and "Byte Address" as inputs and outputs the value of the variable "crc_out Byte x ". The output of the function "CRC", if present, may be at least partially calculated by the code generation sub-block 273 (see FIG. 8).
エラー検出コードが判断された後、エラー検出ブロック272は、エラー検出コードのコード・アドレスを(例えば、オフセットを使用して)判断する。例えば、以下の式2を使用して、カーブアウト部250に書き込まれるデータの特定のバイトのエラー検出コードを判断することができる:
crc_out_address=write_address+fixed_offset 式2
After the error detection code is determined, the error detection block 272 determines the code address of the error detection code (e.g., using an offset). For example, the following Equation 2 may be used to determine the error detection code for a particular byte of data being written to the carve-out portion 250:
crc_out_address=write_address+fixed_offset Formula 2
上記の式2では、変数「crc_out_address」は、バイトの変数「write_address」によって表されるデータ・アドレスと、変数「fixed_offset」によって表されるオフセットとに基づいて計算されるコード・アドレスを表す。前述のように、カーブアウト部250はサブセクションに分けることができ、第1のサブセクション252(図8を参照)はデータを記憶し、第2のサブセクション254(図8を参照)はエラー検出コードを記憶する。したがって、上記の式1の変数「Byte Address」によって表されるデータ・アドレスは、第1のサブセクション252に置くことができ、上記の式2の変数「write_address」によって表されるコード・アドレスは、第2のサブセクション254に置くことができる。このような実施例では、変数「fixed_offset」の値は、エラー検出コードが第2のサブセクション254に確実に記憶されるように、カーブアウト部250の第1のサブセクション252のサイズと同じになり得る。このようにして、アドレス・ベースの分離を使用してエラー検出コードからデータを分離し、これにより、第1のサブセクション252及び第2のサブセクション254のうちの一方で発生する障害が他方のサブセクションに影響を与えないようにする。 In the above equation 2, the variable "crc_out_address" represents a code address calculated based on the data address represented by the variable "write_address" in bytes and the offset represented by the variable "fixed_offset". As mentioned above, the carve-out portion 250 can be divided into subsections, with a first subsection 252 (see FIG. 8) storing data and a second subsection 254 (see FIG. 8) storing error detection code. Thus, the data address represented by the variable "Byte Address" in the above equation 1 can be placed in the first subsection 252, and the code address represented by the variable "write_address" in the above equation 2 can be placed in the second subsection 254. In such an embodiment, the value of the variable "fixed_offset" may be equal to the size of the first subsection 252 of the carve-out portion 250 to ensure that the error detection code is stored in the second subsection 254. In this manner, address-based separation is used to separate the data from the error detection code, thereby ensuring that a failure in one of the first subsection 252 and the second subsection 254 does not affect the other subsection.
エラー検出ブロック272は、データ・アドレス内へのデータの記憶とコード・アドレス内へのエラー検出コードの記憶との間に遅延(例えば、数クロック・サイクル)を発生させる。この遅延により、データに悪影響を与えるイベント(例えば、一時的イベント)がエラー検出コードにも悪影響を及ぼす可能性が低減する。つまり、遅延は共通原因故障や一時的故障からの耐性を提供するのに役立ち、これは、クロック・グリッチなどの問題からの保護を提供するのに役立つ。エラー検出ブロック272は、2バイト以上のデータとそれに対応するエラー検出コードをバッファしてから、それらをカーブアウト部250に記憶することができる。そして、エラー検出ブロック272は、第1のサブセクション252にデータのバイト(例えば、16バイト)を記憶することができ、その後に遅延が続く。次に、エラー検出ブロック272は、第2のサブセクション254に、対応するエラー検出コード(例えば、16バイト)を記憶することができる。 The error detection block 272 creates a delay (e.g., a few clock cycles) between the storage of data in the data address and the storage of the error detection code in the code address. This delay reduces the likelihood that an event (e.g., a transient event) that adversely affects the data also adversely affects the error detection code. That is, the delay helps provide immunity from common cause failures and transient failures, which helps provide protection from problems such as clock glitches. The error detection block 272 can buffer two or more bytes of data and their corresponding error detection codes before storing them in the carve-out portion 250. The error detection block 272 can then store a byte (e.g., 16 bytes) of data in the first subsection 252, followed by a delay. The error detection block 272 can then store the corresponding error detection code (e.g., 16 bytes) in the second subsection 254.
ここで、図7を参照すると、本明細書に説明される方法700の各ブロックには、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組み合わせを使用して実行され得るプロセスが含まれる。例えば、方法700はエラー検出ブロック272(図2、図8、及び図10を参照)のハードウェアによって実行され得る。別の非限定的な例として、1つ又は複数の機能は、メモリ(例えば、図1、図2、及び図4に示す揮発性メモリ146)に記憶された命令(例えば、図1、図2、及び図4に示す命令149)をプロセッサ(例えば、図1、図2、及び図4に示すプロセッサ140)が実行することによって実行され得る。このような実施例では、方法700の少なくとも一部は、コンピュータ記憶媒体に記憶されたコンピュータ使用可能命令としても具体化され得る。方法700は、いくつか例を挙げると、スタンドアロン・アプリケーション、サービス又はホスト・サービス(スタンドアロン又は別のホスト・サービスとの組み合わせ)、又は別の製品へのプラグ・インによって提供され得る。また、方法700は、例として、図1の車載プラットフォーム100に関して説明される。しかしながら、方法700は、加えて又は或いは、任意の1つのシステム、又は本明細書で説明されているものを含むが、これらに限定されないシステムの任意の組み合わせによって実行され得る。 7, each block of the method 700 described herein includes a process that may be performed using any combination of hardware, firmware, and/or software. For example, the method 700 may be performed by the hardware of the error detection block 272 (see FIGS. 2, 8, and 10). As another non-limiting example, one or more functions may be performed by a processor (e.g., the processor 140 shown in FIGS. 1, 2, and 4) executing instructions (e.g., the instructions 149 shown in FIGS. 1, 2, and 4) stored in a memory (e.g., the volatile memory 146 shown in FIGS. 1, 2, and 4). In such an embodiment, at least a portion of the method 700 may also be embodied as computer usable instructions stored on a computer storage medium. The method 700 may be provided by a standalone application, a service or a host service (standalone or in combination with another host service), or a plug-in to another product, to name a few. The method 700 is also described with respect to the vehicle platform 100 of FIG. 1, by way of example. However, method 700 may additionally or alternatively be performed by any one system or any combination of systems, including but not limited to those described herein.
図7は、本開示のいくつかの実施例による、カーブアウト部250(図2、図8、及び図10を参照)にデータを書き込む方法700を示すフロー図である。説明を容易にするために、方法700はエラー検出ブロック272(図2、図8、及び図10を参照)によって実行されているものとして説明する。方法700が開始される前に、SIドメインで動作するイニシエータ(例えば、プロセッサ140、DMAエンジン402など)が、データ及びデータ・アドレスを含む第1の書き込み命令をエラー検出ブロック272に転送する。イニシエータは、所定のサイズ(例えば、16バイト)のデータをカーブアウト部250に書き込むことができる。 7 is a flow diagram illustrating a method 700 for writing data to the carve-out portion 250 (see FIGS. 2, 8, and 10) according to some embodiments of the present disclosure. For ease of explanation, the method 700 is described as being performed by the error detection block 272 (see FIGS. 2, 8, and 10). Before the method 700 begins, an initiator (e.g., the processor 140, the DMA engine 402, etc.) operating in the SI domain transfers a first write command including data and a data address to the error detection block 272. The initiator may write a predetermined size (e.g., 16 bytes) of data to the carve-out portion 250.
図7を参照すると、第1のブロック702において、エラー検出ブロック272(図2、図8、及び図10を参照)は、イニシエータからデータ及びデータ・アドレスを含む第1の書き込み命令を受信する。ブロック704では、エラー検出ブロック272は、データの一部分と、その部分に対応するデータ・アドレスのうちの1つとを選択する。非限定的な例として、エラー検出ブロック272は、ブロック704において、データのバイトと、選択したバイトに対応するデータ・アドレスとを選択することができる。いくつかの実施例では、第1の書き込み命令には単一のデータ・アドレス(例えば、第1のアドレス)しか含まれていない場合がある。後続のデータ・アドレスは、その単一のアドレスに基づいて(例えば、所定のデータ・サイズを単一のデータ・アドレスに追加することによって)判断され得る。したがって、いくつかの実施例では、データ・アドレスは、データの少なくとも一部については、ブロック704において計算される場合がある。 7, in a first block 702, the error detection block 272 (see FIGS. 2, 8, and 10) receives a first write command from an initiator, the first write command including data and a data address. In block 704, the error detection block 272 selects a portion of the data and one of the data addresses corresponding to the portion. As a non-limiting example, the error detection block 272 may select a byte of data and a data address corresponding to the selected byte in block 704. In some embodiments, the first write command may include only a single data address (e.g., the first address). Subsequent data addresses may be determined based on the single address (e.g., by adding a predetermined data size to the single data address). Thus, in some embodiments, a data address may be calculated in block 704 for at least a portion of the data.
次に、ブロック706では、エラー検出ブロック272は、ブロック704において選択されたデータの一部分のエラー検出コードを(例えば、上記の式1を使用して)判断する。次に、ブロック708では、エラー検出ブロック272は、ブロック704において選択されたデータの一部分と対応するデータ・アドレスとを含む第1の書き込み命令を、カーブアウト部250(図2、図8、及び図10を参照)の第1のサブセクション252(図8及び図10を参照)に転送する。第1の書き込み命令に従って、カーブアウト部250は、第1のサブセクション252の対応するデータ・アドレスに一部分を記憶する。 Next, in block 706, the error detection block 272 determines an error detection code (e.g., using Equation 1 above) for the portion of the data selected in block 704. Next, in block 708, the error detection block 272 transfers a first write command including the portion of the data selected in block 704 and a corresponding data address to the first subsection 252 (see Figures 8 and 10) of the carve-out portion 250 (see Figures 2, 8, and 10). In accordance with the first write command, the carve-out portion 250 stores the portion at the corresponding data address in the first subsection 252.
次のブロック710では、エラー検出ブロック272(図2、図8、及び図10を参照)は、ブロック706において(例えば、上記の式2を使用して)判断されたエラー検出コードのコード・アドレスを判断する。ブロック712では、エラー検出ブロック272は、エラー検出コードをカーブアウト部250(図2、図8、及び図10を参照)の第1のサブセクション252(図8及び図10を参照)宛てに、コード・アドレスに記憶するために送るのを、待機する(例えば、数クロック・サイクル)。したがって、ブロック712では、エラー検出ブロック272は、データ・アドレス内へのデータの記憶とコード・アドレス内へのエラー検出コードの記憶との間に遅延を発生させる。エラー検出ブロック272には、ブロック712においてエラー検出ブロック272が待機する時間を判断するために使用される書き込み遅延タイマ(図示せず)が含まれていてもよい。したがって、エラー検出ブロック272は、コード・アドレス内への記憶のためにエラー検出コードをカーブアウト部250に送る前に、第5の所定の時間だけ待機することがある。次に、ブロック714では、エラー検出ブロック272は、ブロック706において判断されたエラー検出コードとブロック710において判断されたコード・アドレスとを含む第2の書き込み命令を、カーブアウト部250(図2、図8、及び図10を参照)の第2のサブセクション254(図8及び図10を参照)に転送する。したがって、データを記憶するために、エラー検出ブロック272は、ブロック708及びブロック714においてそれぞれ1回ずつで、2回カーブアウト部250にアクセスする。第2の書き込み命令に従って、カーブアウト部250は、第2のサブセクション254のコード・アドレスにエラー検出コードを記憶する。 In the next block 710, the error detection block 272 (see FIGS. 2, 8, and 10) determines the code address of the error detection code determined in block 706 (e.g., using Equation 2 above). In block 712, the error detection block 272 waits (e.g., for several clock cycles) to send the error detection code to the first subsection 252 (see FIGS. 8 and 10) of the carve-out portion 250 (see FIGS. 2, 8, and 10) for storage in the code address. Thus, in block 712, the error detection block 272 creates a delay between the storage of the data in the data address and the storage of the error detection code in the code address. The error detection block 272 may include a write delay timer (not shown) that is used to determine the time that the error detection block 272 waits in block 712. Thus, the error detection block 272 may wait a fifth predetermined time before sending the error detection code to the carve-out portion 250 for storage in the code address. Next, in block 714, the error detection block 272 transfers a second write command, including the error detection code determined in block 706 and the code address determined in block 710, to the second subsection 254 (see FIGS. 8 and 10) of the carve-out portion 250 (see FIGS. 2, 8, and 10). Thus, to store the data, the error detection block 272 accesses the carve-out portion 250 twice, once in block 708 and once in block 714. In accordance with the second write command, the carve-out portion 250 stores the error detection code at the code address of the second subsection 254.
次に、判断ブロック716では、エラー検出ブロック272(図2、図8、及び図10を参照)は、記憶されていないデータがないかどうかを判定する。エラー検出ブロック272が、データの少なくとも一部が記憶されていないと判定した場合、判断ブロック716の判断は「はい」である。それ以外の場合、判断ブロック516の判断は「いいえ」である。判断ブロック716の判断が「はい」の場合、エラー検出ブロック272はブロック704に戻り、データの新しい部分を選択する。一方、判断ブロック716の判断が「いいえ」の場合、エラー検出ブロック272はブロック702に戻り、新しいデータ及び新しいデータ・アドレスを受信する。 Next, in decision block 716, error detection block 272 (see Figures 2, 8, and 10) determines whether there is any unstored data. If error detection block 272 determines that at least a portion of the data is not stored, the decision at decision block 716 is "yes." Otherwise, the decision at decision block 516 is "no." If the decision at decision block 716 is "yes," error detection block 272 returns to block 704 to select a new portion of the data. On the other hand, if the decision at decision block 716 is "no," error detection block 272 returns to block 702 to receive new data and a new data address.
前述のように、エラー検出ブロック272は、2バイト以上のデータとそれに対応するエラー検出コードをバッファしてから、それらをカーブアウト部250に記憶することができる。例えば、ブロック706~714の各々は、データの複数のブロック(例えば、ブロック704において選択される)に対して実行することができる。非限定的な例として、エラー検出ブロック272は、2バイト以上のデータに対してブロック706を実行してから、ブロック708において、第1の書き込み命令をカーブアウト部250に、データのバイトとそれに対応するデータ・アドレスとともに送ることができる。例えば、エラー検出ブロック272は、第1のデータ・アドレスとともにデータのバイトを第1のサブセクション252に送ることができる。第1のサブセクション252は、第1のデータ・アドレスから始まる連続したメモリ・アドレスにデータのバイトを書き込むことができる。次に、ブロック710では、エラー検出ブロック272は、ブロック706において判断された2つ以上のエラー検出コードのコード・アドレスを判断することができる。ブロック712では、エラー検出ブロック272は、データのバイトの書き込みとカーブアウト部250へのエラー検出コードの書き込みとの間に遅延を発生させる。次に、ブロック714では、エラー検出ブロック272は、エラー検出コードとコード・アドレスとを含む第2の書き込み命令を第2のサブセクション254に転送する。第2のサブセクション254は、コード・アドレスにエラーコード検出コードを書き込む。実装例の詳細に応じて、第2の書き込み命令には第1のコード・アドレスしか含まれていない場合があり、第2のサブセクション254は第1のコード・アドレスから始まる連続したメモリ・アドレスにエラー検出コードを書き込むことができる。 As previously described, the error detection block 272 may buffer two or more bytes of data and their corresponding error detection codes before storing them in the carve-out portion 250. For example, each of blocks 706-714 may be performed on multiple blocks of data (e.g., selected in block 704). As a non-limiting example, the error detection block 272 may perform block 706 on two or more bytes of data and then send a first write instruction to the carve-out portion 250 in block 708 with the bytes of data and their corresponding data addresses. For example, the error detection block 272 may send the bytes of data with the first data address to the first subsection 252. The first subsection 252 may write the bytes of data to consecutive memory addresses starting from the first data address. Next, in block 710, the error detection block 272 may determine the code addresses of the two or more error detection codes determined in block 706. In block 712, the error detection block 272 creates a delay between writing the byte of data and writing the error detection code to the carve-out portion 250. Then, in block 714, the error detection block 272 forwards a second write instruction including the error detection code and a code address to the second subsection 254. The second subsection 254 writes the error detection code to the code address. Depending on the details of the implementation, the second write instruction may include only the first code address, and the second subsection 254 may write the error detection code to consecutive memory addresses starting from the first code address.
図8は、方法700(図7を参照)を実行するエラー検出ブロック272の一例を示している。SI110には、プロセッサ140、DMAエンジン402など、各々SIドメイン内で動作する1つ又は複数のイニシエータ800が含まれ得る。図8では、イニシエータ800にはイニシエータ802(例えば、プロセッサ140)が含まれている。イニシエータ802(例えば、プロセッサ140)は、所定のサイズ(例えば、16バイト)のデータをカーブアウト部250に書き込むことができる。図8に示す例では、イニシエータ802は、16バイトのデータと第1のデータ・アドレスとをエラー検出ブロック272に送る。データは、図8では、「wdata_in[127:0]」という名前の128ビットの配列によって記憶又は表現され、第1のデータ・アドレスは、図8では、「Address_0[39:0]」という名前の40ビットの配列によって記憶又は表現されている。しかしながら、実装例の詳細によっては、データは他のサイズを有していてもよく、128ビットは非限定的な例として提供されている。同様に、第1のデータ・アドレスも他のサイズを有していてもよく、40ビットは非限定的な例として提供されている。データの第1のバイトは、第1のデータ・アドレスに記憶され、次のデータ・アドレスは、第1のデータ・アドレスに1バイトを追加することによってデータの第2のバイトについて識別され、以下同様であり得る。図8は、イニシエータ802が安全アイランド・インターコネクト808を介して、信号806で第1の書き込み命令804をエラー検出ブロック272に送っていることを示している。前述のように、第1の書き込み命令804にはデータと第1のデータ・アドレスとが含まれている。安全アイランド・インターコネクト808は、バスなどとして実装され得る。 8 shows an example of the error detection block 272 performing the method 700 (see FIG. 7). The SI 110 may include one or more initiators 800, such as the processor 140, the DMA engine 402, each operating within the SI domain. In FIG. 8, the initiator 800 includes an initiator 802 (e.g., the processor 140). The initiator 802 (e.g., the processor 140) may write data of a predetermined size (e.g., 16 bytes) to the carve-out portion 250. In the example shown in FIG. 8, the initiator 802 sends the 16 bytes of data and a first data address to the error detection block 272. The data is stored or represented in FIG. 8 by a 128-bit array named "wdata_in[127:0]" and the first data address is stored or represented in FIG. 8 by a 40-bit array named "Address_0[39:0]". However, depending on the implementation details, the data may have other sizes, and 128 bits are provided as a non-limiting example. Similarly, the first data address may have other sizes, and 40 bits are provided as a non-limiting example. A first byte of data may be stored at the first data address, and the next data address may be identified for the second byte of data by adding one byte to the first data address, and so on. FIG. 8 shows an initiator 802 sending a first write command 804 on signal 806 to the error detection block 272 over a safe island interconnect 808. As previously described, the first write command 804 includes the data and the first data address. The safety island interconnect 808 may be implemented as a bus or the like.
安全アイランド・インターコネクト808は、第1の書き込み命令804をエラー検出ブロック272に供給する(例えば、図7のブロック702)。図示する実施例では、安全アイランド・インターコネクト808は、第1の書き込み命令804を信号810-0~810-15で供給する。各信号には、データのバイト及び第1のデータ・アドレスのうちの1つが含まれている。この実施例では、エラー検出ブロック272は、データの各バイトのエラー検出コードを生成し、生成されるエラー検出コードはCRCコードである。エラー検出ブロック272は、バイトが信号810-0~810-15で受信されるとバイトの処理を開始することができる(例えば、図7のブロック704)。 The safety island interconnect 808 provides the first write command 804 to the error detection block 272 (e.g., block 702 of FIG. 7). In the illustrated embodiment, the safety island interconnect 808 provides the first write command 804 on signals 810-0 through 810-15. Each signal includes one of a byte of data and a first data address. In this embodiment, the error detection block 272 generates an error detection code for each byte of data, where the generated error detection code is a CRC code. The error detection block 272 can begin processing the bytes as they are received on signals 810-0 through 810-15 (e.g., block 704 of FIG. 7).
次に、コード生成サブブロック273がデータの各バイトのエラー検出コードを判断する(例えば、図7のブロック706)。図8では、エラー検出コードを伝達する信号と、エラー検出コードに関連するカーブアウト部250からの応答を伝達する信号838とは、破線矢印によって示されている。したがって、コード生成サブブロック273は、データのバイトを信号812-0~812-15で出力し、対応するエラー検出コードを信号814-0~814-15で出力する。(データ)信号812-0~812-15は、記憶のために第1のサブセクション252にルーティングされ、(コード)信号814-0~814-15は、記憶のために第2のサブセクション254にルーティングされる。 Next, the code generation sub-block 273 determines an error detection code for each byte of data (e.g., block 706 in FIG. 7). In FIG. 8, the signals conveying the error detection codes and the signal 838 conveying the response from the carve-out section 250 related to the error detection code are indicated by dashed arrows. Thus, the code generation sub-block 273 outputs bytes of data on signals 812-0 to 812-15 and corresponding error detection codes on signals 814-0 to 814-15. The (data) signals 812-0 to 812-15 are routed to the first sub-section 252 for storage, and the (code) signals 814-0 to 814-15 are routed to the second sub-section 254 for storage.
エラー検出ブロック272は、第1の時間(例えば、図8では「Time=T0」と識別されている)に、(例えば、信号812-0~812-15内の)データ及び第1のデータ・アドレスを、揮発性メモリ・インターフェース200A(図2を参照)を介して、カーブアウト部250の第1のサブセクション252に送る。つまり、エラー検出ブロック272は、第1の書き込み命令をカーブアウト部250の第1のサブセクション252に送る(例えば、図7のブロック708)。揮発性メモリ・インターフェース200Aは、車載SoC104(図1、図2、及び図4を参照)のデータ・バックボーン及びメモリ・サブシステム826を介して、第1の書き込み命令をカーブアウト部250に伝達する。図8では、第1の書き込み命令は、エラー検出ブロック272によって、信号824で第1のサブセクション252に送られている。 At a first time (e.g., identified in FIG. 8 as "Time=T0"), the error detection block 272 sends the data (e.g., in signals 812-0 to 812-15) and the first data address via the volatile memory interface 200A (see FIG. 2) to the first subsection 252 of the carve-out portion 250. That is, the error detection block 272 sends a first write command to the first subsection 252 of the carve-out portion 250 (e.g., block 708 in FIG. 7). The volatile memory interface 200A communicates the first write command to the carve-out portion 250 via the data backbone and memory subsystem 826 of the vehicle SoC 104 (see FIGS. 1, 2, and 4). In FIG. 8, the first write command is sent by the error detection block 272 to the first subsection 252 on signal 824.
第1のサブセクション252は、第1のデータ・アドレス(図8では「Address_0」と表されている)に第1のバイト(図8では「Data0」と表されている)を記憶し、第1のデータ・アドレスの後の後続のデータ・アドレスに後続のバイトを書き込むことによって、データをメモリに書き込む。この書き込みは、図8では「Time=T0」として表されている第1の時間に発生する。次に、第1のサブセクション252は、データが記憶されたことを確認する応答信号828をイニシエータ802に送る。応答信号828は、第1のサブセクション252によってデータ・バックボーン及びメモリ・サブシステム826に送られ、データ・バックボーン及びメモリ・サブシステム826が応答信号828を揮発性メモリ・インターフェース200A(図2を参照)に転送する。揮発性メモリ・インターフェース200Aがロック解除されると、揮発性メモリ・インターフェース200Aは応答信号828を第1の(データ)バッファ820に転送する。 The first subsection 252 writes data to memory by storing a first byte (represented as "Data0" in FIG. 8) at a first data address (represented as "Address_0" in FIG. 8) and writing subsequent bytes to subsequent data addresses after the first data address. This write occurs at a first time, represented as "Time=T0" in FIG. 8. The first subsection 252 then sends a response signal 828 to the initiator 802 confirming that the data has been stored. The response signal 828 is sent by the first subsection 252 to the data backbone and memory subsystem 826, which forwards the response signal 828 to the volatile memory interface 200A (see FIG. 2). When the volatile memory interface 200A is unlocked, the volatile memory interface 200A transfers the response signal 828 to the first (data) buffer 820.
第1の(データ)バッファ820は、カーブアウト部250から応答信号828で受信された「データ書き込み完了応答」を並べ替える。例えば、エラー検出ブロック272は、(例えば、図7のブロック708で送られる第1の書き込み命令で)書き込み命令A及びBのペアをカーブアウト部250に送ることができる。書き込み命令Bは、書き込み命令Aの後にエラー検出ブロック272によって送られる。カーブアウト部250が書き込み命令A及びBに含まれるデータを書き込んだ後、カーブアウト部250は、第1及び第2のデータ書き込み完了応答をエラー検出ブロック272に送る。しかし、書き込み命令Bに対して受信される第2のデータ書き込み完了応答は、書き込み命令Aに対する第1のデータ書き込み完了応答の前にエラー検出ブロック272に到達する場合がある。この場合、第1の(データ)バッファ820は、第2のデータ書き込み完了応答を記憶し、第1のデータ書き込み完了応答を待機し、第1のデータ書き込み完了応答が到着したらそれを送り、第2のデータ書き込み完了応答を第1のデータ書き込み完了応答の後に送る。したがって、第1の(データ)バッファ820は、データ書き込み完了応答を、応答信号828において予想される順序に置く。 The first (data) buffer 820 reorders the "data write completion responses" received in the response signal 828 from the carve-out section 250. For example, the error detection block 272 can send a pair of write commands A and B to the carve-out section 250 (e.g., in the first write command sent in block 708 of FIG. 7). Write command B is sent by the error detection block 272 after write command A. After the carve-out section 250 writes the data included in the write commands A and B, the carve-out section 250 sends the first and second data write completion responses to the error detection block 272. However, the second data write completion response received for the write command B may arrive at the error detection block 272 before the first data write completion response for the write command A. In this case, the first (data) buffer 820 stores the second data write completion response, waits for the first data write completion response, sends the first data write completion response when it arrives, and sends the second data write completion response after the first data write completion response. Thus, the first (data) buffer 820 places the data write completion responses in the expected order in the response signal 828.
第1の(データ)バッファ820は、応答信号828を安全アイランド・インターコネクト808に転送し、安全アイランド・インターコネクト808が応答信号828をイニシエータ802に転送する。この時点で、この例では、データ(例えば、16バイト)が第1の単一の書き込み操作で第1のサブセクション252に書き込まれている。 The first (data) buffer 820 forwards the response signal 828 to the safe island interconnect 808, which forwards the response signal 828 to the initiator 802. At this point, in this example, the data (e.g., 16 bytes) has been written to the first subsection 252 in the first single write operation.
エラー検出ブロック272はまた、第1のデータ・アドレスに基づいて第1のコード・アドレスを判断する(例えば、図7のブロック710)。図8では、第1のコード・アドレスは、第1のデータ・アドレスに16メガバイト(MB:MegaByte)を加算することによって計算される。しかしながら、実装例の詳細によっては、オフセットは他のサイズを有していてもよく、16MBは例として提供されている。さらに、第1のコード・アドレスの位置は、他の方法及び/又は計算を使用して判断されてもよい。 The error detection block 272 also determines a first code address based on the first data address (e.g., block 710 of FIG. 7). In FIG. 8, the first code address is calculated by adding 16 MegaBytes (MB) to the first data address. However, depending on the details of the implementation, the offset may have other sizes, and 16 MB is provided as an example. Additionally, the location of the first code address may be determined using other methods and/or calculations.
エラー検出ブロック272は、第2の時間(例えば、図8では「Time=T1」と識別されている)まで待機する(例えば、図7のブロック712)。第1の時間と第2の時間とは異なる。第2の時間に、エラー検出ブロック272は、エラー検出コード及び第1のコード・アドレスを、揮発性メモリ・インターフェース200A(図2を参照)を介して、カーブアウト部250の第2のサブセクション254に送る。つまり、エラー検出ブロック272は、第2の書き込み命令をカーブアウト部250の第2のサブセクション254に送る(例えば、図7のブロック714)。揮発性メモリ・インターフェース200Aは、車載SoC104(図1、図2、及び図4を参照)のデータ・バックボーン及びメモリ・サブシステム826を介して、第2の書き込み命令をカーブアウト部250に伝達する。図8では、第2の書き込み命令は、エラー検出ブロック272によって、信号834で第2のサブセクション254に送られている。 The error detection block 272 waits (e.g., block 712 in FIG. 7) until a second time (e.g., identified in FIG. 8 as “Time=T1”), which is different from the first time and the second time. At the second time, the error detection block 272 sends the error detection code and the first code address to the second subsection 254 of the carve-out portion 250 via the volatile memory interface 200A (see FIG. 2). That is, the error detection block 272 sends a second write command to the second subsection 254 of the carve-out portion 250 (e.g., block 714 in FIG. 7). The volatile memory interface 200A communicates the second write command to the carve-out portion 250 via the data backbone and memory subsystem 826 of the vehicle SoC 104 (see FIGS. 1, 2, and 4). In FIG. 8, the second write command is sent by the error detection block 272 to the second subsection 254 on signal 834.
第2のサブセクション254は、第1のコード・アドレス(図8では「Address_1」と表されている)に第1のエラー検出コード(図8では「CRC0」と表されている)を記憶し、第1のコード・アドレスの後の後続のコード・アドレスに後続のエラー検出コードを書き込むことによって、エラー検出コードをメモリに書き込む。次に、第2のサブセクション254は、エラー検出コードが記憶されたことを確認する応答信号838をイニシエータ802に送る。図8に示す実施例では、応答信号838は、第2のサブセクション254によってデータ・バックボーン及びメモリ・サブシステム826に送られ、データ・バックボーン及びメモリ・サブシステム826が応答信号838を揮発性メモリ・インターフェース200A(図2を参照)に転送する。揮発性メモリ・インターフェース200Aがロック解除されると、揮発性メモリ・インターフェース200Aは応答信号838を第2の(コード)バッファ822に転送する。第2の(コード)バッファ822は、カーブアウト部250から応答信号838で受信された「コード書き込み完了応答」を並べ替える。例えば、エラー検出ブロック272は、書き込み命令A及びBに含まれるデータの第1及び第2のエラー検出コードをそれぞれ判断し、第1及び第2のエラー検出コードをカーブアウト部250に(例えば、第2の書き込み命令で)送る。カーブアウト部250が第1及び第2のエラー検出コードをメモリに書き込んだ後、カーブアウト部250は、第1及び第2のコード書き込み完了応答をそれぞれ第2の(コード)バッファ822に送る。しかし、第2のエラー検出コードに対して受信される第2のコード書き込み完了応答は、第1のエラー検出コードに対する第1のコード書き込み完了応答の前にエラー検出ブロック272に到達する場合がある。この場合、第2の(コード)バッファ822は、第2のコード書き込み完了応答を記憶し、第1のコード書き込み完了応答を待機し、第1のコード書き込み完了応答が到着したらそれを送り、第2のコード書き込み完了応答を第1のコード書き込み完了応答の後に送る。 The second subsection 254 writes the error detection code to the memory by storing a first error detection code (represented as "CRC0" in FIG. 8) at a first code address (represented as "Address_1" in FIG. 8) and writing subsequent error detection codes at subsequent code addresses after the first code address. The second subsection 254 then sends a response signal 838 to the initiator 802 confirming that the error detection code has been stored. In the embodiment shown in FIG. 8, the response signal 838 is sent by the second subsection 254 to the data backbone and memory subsystem 826, which forwards the response signal 838 to the volatile memory interface 200A (see FIG. 2). When the volatile memory interface 200A is unlocked, the volatile memory interface 200A forwards the response signal 838 to the second (code) buffer 822. The second (code) buffer 822 reorders the "code write completion responses" received in the response signal 838 from the carve-out unit 250. For example, the error detection block 272 determines the first and second error detection codes of the data included in the write instructions A and B, respectively, and sends the first and second error detection codes to the carve-out unit 250 (e.g., in the second write instruction). After the carve-out unit 250 writes the first and second error detection codes to the memory, the carve-out unit 250 sends the first and second code write completion responses to the second (code) buffer 822, respectively. However, the second code write completion response received for the second error detection code may arrive at the error detection block 272 before the first code write completion response for the first error detection code. In this case, the second (code) buffer 822 stores the second code write completion response, waits for the first code write completion response, sends the first code write completion response when it arrives, and sends the second code write completion response after the first code write completion response.
第2の(コード)バッファ822は、応答信号838をドロップすることがある。或いは、第2の(コード)バッファ822は、応答信号838を安全アイランド・インターコネクト808に転送し、安全アイランド・インターコネクト808が応答信号838をイニシエータ802に転送してもよい。この時点で、この例では、エラー検出コード(例えば、16バイト)が第2の単一の書き込み操作で第2のサブセクション254に書き込まれている。 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, the error detection code (e.g., 16 bytes) has been written to the second subsection 254 in the second single write operation.
揮発性メモリ・インターフェース200Aには、エラー検出ブロック272と揮発性メモリ126とを接続する2つのパラレルの、及び任意選択で専用のインターフェースが含まれている場合がある。データは第1のインターフェースを介して第1のデータ・アドレスに送られ、エラー検出コードは第2のインターフェースを介して第1のコード・アドレスに送られ得る。このような実施例では、エラー検出ブロック272は、エラー検出ブロック272が(例えば、信号834に)エラー検出コードと第1のコード・アドレスとを含む第2の書き込み命令を第2のサブセクション254に第2のインターフェースを介して送るのと同時に、(例えば、信号824に)データと第1のデータ・アドレスとを含む第1の書き込み命令を第1のサブセクション252に第1のインターフェースを介して送ることができる。さらに、(データ)応答信号828及び(コード)応答信号838は、それぞれ第1のバッファ820及び第2のバッファ822に、それぞれ第1及び第2のインターフェースを介して同時に送信することができる。 The volatile memory interface 200A may include two parallel and optionally dedicated interfaces connecting the error detection block 272 and the volatile memory 126. Data may be sent to a first data address via the first interface, and an error detection code may be sent to a first code address via the second interface. In such an embodiment, the error detection block 272 may send a first write command including data and a first data address (e.g., on signal 824) to the first subsection 252 via the first interface at the same time that the error detection block 272 sends a second write command including the error detection code and the first code address (e.g., on signal 834) to the second subsection 254 via the second interface. Furthermore, the (data) response signal 828 and the (code) response signal 838 may be simultaneously transmitted to the first buffer 820 and the second buffer 822, respectively, via the first and second interfaces, respectively.
SI110のイニシエータ802(例えば、プロセッサ140)がカーブアウト部250からデータを読み取ることを望む場合、SI110はカーブアウト部250からデータとエラー検出コードの両方を受信する。SI110は、データがデータ・アドレスから読み取られるときと、エラー検出コードがコード・アドレスから読み取られるときとの間に遅延を発生させる。この遅延により、データに悪影響を与えるイベントがエラー検出コードにも悪影響を及ぼす可能性が低減する。SI110は、エラー検出ブロック272を介して読み取ったデータを渡す。エラー検出ブロック272は、読み取ったデータのチェック・コードを判断し、エラー検出コードとチェック・コードとを比較する。この比較は、以下の式3で表すことができる:
CRC_gen(Requested address,Fetched Data)==crc_inByte x(CRC_address) 式3
When an initiator 802 (e.g., processor 140) of SI 110 wants to read data from carve-out portion 250, SI 110 receives both the data and the error detection code from carve-out portion 250. SI 110 creates a delay between when the data is read from the data address and when the error detection code is read from the code address. This delay reduces the likelihood that an event that affects the data will also affect the error detection code. SI 110 passes the read data through error detection block 272. Error detection block 272 determines the check code of the read data and compares the error detection code to the check code. This comparison can be expressed as Equation 3 below:
CRC_gen(Requested address, Fetched Data)==crc_in Byte x (CRC_address) Formula 3
式3では、演算子「==」は、演算子「==」の左にある式が演算子「==」の右にある式と等しいかどうかを示す。変数「Fetched Data」は、ブロック906において取得されたデータの少なくとも一部分(例えば、Byte x)を表し、変数「Requested address」は、データのその部分のデータ・アドレスを表し、変数「CRC_address」は、データの一部分(例えば、Byte x)のデータ・アドレスに基づいて判断されるコード・アドレスを表す。関数「CRC_gen」は、変数「Fetched Data」及び「Requested address」の値を入力として使用し、関数「CRC_gen」はその部分(例えば、Byte x)のチェック・コードを出力する。関数「CRC_gen」は、上記の式1の関数「CRC」と同一であり得る。関数「CRC_gen」の出力は、存在する場合、コード生成サブブロック273(図8を参照)によって少なくとも部分的に計算され得る。式「crc_inByte x(CRC_address)」は、そのデータ・アドレスを使用してその部分(例えば、Byte x)に対して判断されたコード・アドレスから取得されたエラー検出コードを表す。したがって、式3は、チェック・コードがエラー検出コードと等しいか、又は一致するかを判断する。エラー検出ブロック272は、チェック・コードがエラー検出コードと一致しない場合に不一致エラーを生成し得る。エラー検出ブロック272は、不一致エラーをイニシエータ802及びSI障害アグリゲータ142に送り、これにより、命令149によって実装され、プロセッサ140によって実行される安全ソフトウェアによって不一致エラーがクリアされ得る。 In Equation 3, the operator "==" indicates whether the expression to the left of the operator "==" is equal to the expression to the right of the operator "==". The variable "Fetched Data" represents at least a portion of the data retrieved in block 906 (e.g., Byte x), the variable "Requested address" represents a data address of the portion of the data, and the variable "CRC_address" represents a code address determined based on the data address of the portion of the data (e.g., Byte x). The function "CRC_gen" uses the values of the variables "Fetched Data" and "Requested address" as inputs, and the function "CRC_gen" outputs a check code for the portion (e.g., Byte x). The function "CRC_gen" may be identical to the function "CRC" in Equation 1 above. The output of the function "CRC_gen", if present, may be at least partially calculated by the code generation sub-block 273 (see FIG. 8). The expression "crc_in Byte x (CRC_address)" represents the error detection code obtained from the code address determined for the portion (e.g., Byte x) using the data address. Thus, Equation 3 determines whether the check code is equal to or matches the error detection code. The error detection block 272 may generate a mismatch error if the check code does not match the error detection code. The error detection block 272 may send the mismatch error to the initiator 802 and the SI fault aggregator 142, which may clear the mismatch error by the safety software implemented by the instructions 149 and executed by the processor 140.
ここで、図9を参照すると、本明細書に説明される方法900の各ブロックには、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組み合わせを使用して実行され得るプロセスが含まれる。例えば、方法900はエラー検出ブロック272(図2、図8、及び図10を参照)のハードウェアによって実行され得る。別の非限定的な例として、1つ又は複数の機能は、メモリ(例えば、図1、図2、及び図4に示す揮発性メモリ146)に記憶された命令(例えば、図1、図2、及び図4に示す命令149)をプロセッサ(例えば、図1、図2、及び図4に示すプロセッサ140)が実行することによって実行され得る。方法900の少なくとも一部は、コンピュータ記憶媒体に記憶されたコンピュータ使用可能命令としても具体化され得る。方法900は、いくつか例を挙げると、スタンドアロン・アプリケーション、サービス又はホスト・サービス(スタンドアロン又は別のホスト・サービスとの組み合わせ)、又は別の製品へのプラグ・インによって提供され得る。また、方法900は、例として、図1の車載プラットフォーム100に関して説明される。しかしながら、方法900は、加えて又は或いは、任意の1つのシステム、又は本明細書で説明されているものを含むが、これらに限定されないシステムの任意の組み合わせによって実行され得る。 9, each block of the method 900 described herein includes a process that may be performed using any combination of hardware, firmware, and/or software. For example, the method 900 may be performed by the hardware of the error detection block 272 (see FIGS. 2, 8, and 10). As another non-limiting example, one or more functions may be performed by a processor (e.g., the processor 140 shown in FIGS. 1, 2, and 4) executing instructions (e.g., the instructions 149 shown in FIGS. 1, 2, and 4) stored in a memory (e.g., the volatile memory 146 shown in FIGS. 1, 2, and 4). At least a portion of the method 900 may also be embodied as computer usable instructions stored on a computer storage medium. The method 900 may be provided by a standalone application, a service or a host service (standalone or in combination with another host service), or a plug-in to another product, to name a few. The method 900 is also described with respect to the vehicle platform 100 of FIG. 1, by way of example. However, method 900 may additionally or alternatively be performed by any one system or any combination of systems, including but not limited to those described herein.
図9は、本開示のいくつかの実施例による、カーブアウト部250(図2、図8、及び図10を参照)からデータを読み取る方法900を示すフロー図である。説明を容易にするために、方法900はエラー検出ブロック272(図2、図8、及び図10を参照)によって実行されているものとして説明する。方法900が開始される前に、イニシエータ802(図8を参照)は、1つ又は複数のデータ・アドレスを含む第1の読み取り命令をエラー検出ブロック272に転送する。非限定的な例として、第1の読み取り命令には第1のデータ・アドレスしか含まれていない場合がある。図9を参照すると、第1のブロック902において、エラー検出ブロック272は、イニシエータ802からデータ・アドレスを含む第1の読み取り命令を受信する。ブロック904では、エラー検出ブロック272は、第1の読み取り命令を第1のサブセクション252に転送し、データ・アドレスに記憶されているデータを要求する。第1の読み取り命令に第1のデータ・アドレスしか含まれていない場合、第1のサブセクション252は、第1のデータ・アドレスから始まる連続するメモリ・アドレスから、所定量のデータ(例えば、16バイト)を読み取ることができる。ブロック906では、エラー検出ブロック272は、第1のサブセクション252からデータ・アドレスに記憶されたデータを受信する。 9 is a flow diagram illustrating a method 900 for reading data from the carve-out section 250 (see FIGS. 2, 8, and 10) according to some embodiments of the present disclosure. For ease of explanation, the method 900 is described as being performed by the error detection block 272 (see FIGS. 2, 8, and 10). Before the method 900 begins, the initiator 802 (see FIG. 8) transfers a first read command including one or more data addresses to the error detection block 272. As a non-limiting example, the first read command may only include a first data address. Referring to FIG. 9, in a first block 902, the error detection block 272 receives a first read command including a data address from the initiator 802. In block 904, the error detection block 272 transfers the first read command to the first subsection 252 and requests the data stored at the data address. If the first read instruction includes only the first data address, the first subsection 252 may read a predetermined amount of data (e.g., 16 bytes) from consecutive memory addresses starting from the first data address. In block 906, the error detection block 272 receives the data stored at the data addresses from the first subsection 252.
次に、ブロック908では、エラー検出ブロック272は、データに対応するエラー検出コードのコード・アドレスを(例えば、上記の式2を使用して)判断する。非限定的な例として、コード・アドレスはデータ・アドレスに少なくとも部分的に基づいて判断され得る。例えば、上記の式2に従って、コード・アドレスの各々は、データ・アドレスのうちの対応する1つ(変数「write_address」の値)にオフセット(変数「fixed_offset」の値)を加算することによって計算することができる。実装例の詳細に応じて、エラー検出ブロック272は、第1のデータ・アドレスに基づいて第1のコード・アドレスしか識別しない場合がある。次に、ブロック910では、エラー検出ブロック272は、ブロック908で判断されたコード・アドレスに記憶されたエラー検出コードを要求するのを待機する(例えば、数クロック・サイクル)。したがって、ブロック910では、エラー検出ブロック272は、データの読み取りとコード・アドレスからのエラー検出コードの読み取りとの間に遅延を発生させる。エラー検出ブロック272には、ブロック910においてエラー検出ブロック272が待機する時間を判断するために使用される読み取り遅延タイマ(図示せず)が含まれていてもよい。したがって、エラー検出ブロック272は、第2のセクション254からエラー検出コードを要求する前に、第6の所定の時間だけ待機することがある。 Next, in block 908, the error detection block 272 determines (e.g., using Equation 2 above) a code address of an error detection code corresponding to the data. As a non-limiting example, the code address may be determined based at least in part on the data address. For example, in accordance with Equation 2 above, each of the code addresses may be calculated by adding an offset (the value of the variable "fixed_offset") to a corresponding one of the data addresses (the value of the variable "write_address"). Depending on the details of the implementation, the error detection block 272 may only identify a first code address based on the first data address. Next, in block 910, the error detection block 272 waits (e.g., for a few clock cycles) to request the error detection code stored at the code address determined in block 908. Thus, in block 910, the error detection block 272 creates a delay between reading the data and reading the error detection code from the code address. The error detection block 272 may include a read delay timer (not shown) that is used to determine how long the error detection block 272 waits in block 910. Thus, the error detection block 272 may wait a sixth predetermined time before requesting an error detection code from the second section 254.
待機後、次のブロック912で、エラー検出ブロック272は、ブロック908で判断されたコード・アドレスを含む第2の読み取り命令を第2のサブセクション254に送り、それらのコード・アドレスに記憶されているエラー検出コードを要求する。したがって、データを読み取るために、エラー検出ブロック272は、ブロック904及びブロック912においてそれぞれ1回ずつで、2回カーブアウト部250にアクセスする。第2の読み取り命令に第1のコード・アドレスしか含まれていない場合、第2のサブセクション254は、第1のコード・アドレスから始まる連続するメモリ・アドレスから、所定の数のエラー検出コード(例えば、16バイト)を読み取ることができる。ブロック914では、エラー検出ブロック272は、第2のサブセクション254からコード・アドレスに記憶されたエラー検出コードを受信する。ブロック916では、エラー検出ブロック272は、ブロック914で取得したエラー検出コードの各々のチェック・コードを(例えば、上記の式1を使用して)判断する。 After waiting, in the next block 912, the error detection block 272 sends a second read instruction to the second subsection 254, including the code addresses determined in block 908, requesting the error detection codes stored at those code addresses. Thus, to read the data, the error detection block 272 accesses the carve-out portion 250 twice, once in block 904 and once in block 912. If the second read instruction includes only the first code address, the second subsection 254 can read a predetermined number of error detection codes (e.g., 16 bytes) from consecutive memory addresses starting from the first code address. In block 914, the error detection block 272 receives the error detection codes stored at the code addresses from the second subsection 254. In block 916, the error detection block 272 determines (e.g., using Equation 1 above) the check code for each of the error detection codes obtained in block 914.
判断ブロック918において、エラー検出コードの各々について、エラー検出ブロック272は、エラー検出コードが、エラー検出コードに対応するチェック・コードと一致するかどうかを(例えば、上記の式3を使用して)判定する。エラー検出コードが、その対応するチェック・コードと一致する場合、判断ブロック918の判断は「はい」である。それ以外の場合、判断ブロック918の判断は「いいえ」である。判断ブロック918の判断が「はい」である場合、ブロック920では、エラー検出ブロック272は、エラー検出コードに対応するデータをイニシエータ802(図8を参照)に転送する。判断ブロック918の判断が「いいえ」である場合、ブロック922では、エラー検出ブロック272は、不一致エラーを生成し、これをイニシエータ802及びSI障害アグリゲータ142(図1、図2、及び図4を参照)に送り、これにより、命令149によって実装され、プロセッサ140によって実行される安全ソフトウェアによって不一致エラーがクリアされ得る。任意選択で、ブロック922では、エラー検出ブロック272は、エラー検出コード(例えば、ECCとして実装されている)にデータの回復に使用でき得る情報(例えば、ビット)が含まれている場合、不一致を訂正することを試みてもよい。エラー検出ブロック272がエラーを訂正できる場合、エラー検出ブロック272はブロック922での不一致エラーの生成を省略することができる。ブロック920の後、エラー検出ブロック272はブロック920に進み、データをイニシエータ802に転送する。その後、方法900は終了する。 For each error detection code, in decision block 918, the error detection block 272 determines (e.g., using equation 3 above) whether the error detection code matches the check code corresponding to the error detection code. If the error detection code matches its corresponding check code, the decision of decision block 918 is "yes." Otherwise, the decision of decision block 918 is "no." If the decision of decision block 918 is "yes," in block 920, the error detection block 272 transfers the data corresponding to the error detection code to the initiator 802 (see FIG. 8). If the decision of decision block 918 is "no," in block 922, the error detection block 272 generates a mismatch error and sends it to the initiator 802 and the SI fault aggregator 142 (see FIGS. 1, 2, and 4), so that the mismatch error can be cleared by the safety software implemented by the instructions 149 and executed by the processor 140. Optionally, at block 922, the error detection block 272 may attempt to correct the mismatch if the error detection code (e.g., implemented as an ECC) contains information (e.g., bits) that can be used to recover the data. If the error detection block 272 is able to correct the error, the error detection block 272 may omit generating a mismatch error at block 922. After block 920, the error detection block 272 proceeds to block 920 and forwards the data to the initiator 802. The method 900 then ends.
エラー検出ブロック272は、一度に2バイト以上のデータとそれに対応するエラー検出コードをカーブアウト部250から読み取ることができる。例えば、ブロック904~914の各々は、データの複数のブロックに対して実行することができる。非限定的な例として、ブロック904では、エラー検出ブロック272は、第1のデータ・アドレスから2バイト以上のデータを要求する第1の読み取り命令を第1のサブセクション252に送ることができる。第1のサブセクション252は、第1のデータ・アドレスから始まる連続したメモリ・アドレスからデータのバイトを読み取り、データのバイトをエラー検出ブロック272に送ることができる。このデータのバイトは、エラー検出ブロック272がブロック906で受信する。次に、ブロック908では、エラー検出ブロック272は、データ・アドレスに基づいてコード・アドレスを判断することができる。実装例の詳細に応じて、エラー検出ブロック272は、第1のデータ・アドレスに基づいて第1のコード・アドレスしか識別しない場合がある。次に、ブロック910では、エラー検出ブロック272は、データのバイトの読み取りとカーブアウト部250からのエラー検出コードの読み取りとの間に遅延を発生させる。次に、エラー検出ブロック272は、ブロック906で取得されたデータのバイトについて、カーブアウト部250に記憶されているエラー検出コードを要求することができる。例えば、エラー検出ブロック272は、第1のコード・アドレスを第2のサブセクション254に送ることができる。第2のサブセクション254は、第1のコード・アドレスから始まる連続したメモリ・アドレスからエラー検出コードを読み取り、エラー検出コードをエラー検出ブロック272に送ることができる。このエラー検出コードは、エラー検出ブロック272がブロック914で受信する。次に、方法900はブロック916で継続する。 The error detection block 272 can read more than one byte of data and the corresponding error detection code at a time from the carve-out portion 250. For example, each of the blocks 904-914 can be performed on multiple blocks of data. As a non-limiting example, in block 904, the error detection block 272 can send a first read instruction to the first subsection 252 requesting more than one byte of data from a first data address. The first subsection 252 can read bytes of data from consecutive memory addresses starting from the first data address and send the bytes of data to the error detection block 272. The bytes of data are received by the error detection block 272 in block 906. Then, in block 908, the error detection block 272 can determine a code address based on the data address. Depending on the details of the implementation, the error detection block 272 may only identify a first code address based on the first data address. Next, in block 910, the error detection block 272 creates a delay between reading the byte of data and reading the error detection code from the carve-out portion 250. The error detection block 272 can then request the error detection code stored in the carve-out portion 250 for the byte of data obtained in block 906. For example, the error detection block 272 can send a first code address to the second subsection 254. The second subsection 254 can read the error detection codes from consecutive memory addresses starting from the first code address and send the error detection codes to the error detection block 272. The error detection code is received by the error detection block 272 in block 914. The method 900 then continues in block 916.
図10は、方法900を実行するエラー検出ブロック272の一例を示している。この例では、プロセッサ140は、図8に示す例によって記憶されている16バイトのデータをカーブアウト部250から読み取る。図10では、読み取られたデータは「rdata_in[127:0]」という名前の128ビットの配列によって記憶又は表現され、データは、「Address_0[39:0]」という名前の40ビットの配列によって記憶又は表現されている第1のデータ・アドレスから始めて記憶される。図10では、イニシエータ802(例えば、プロセッサ140)が、安全アイランド・インターコネクト808を介してエラー検出ブロック272に第1の読み取り命令1004を送っていることを示している。安全アイランド・インターコネクト808は、第1の読み取り命令1004をエラー検出ブロック272に供給する(例えば、図9のブロック902)。 10 shows an example of the error detection block 272 performing the method 900. In this example, the processor 140 reads 16 bytes of data from the carve-out portion 250, which are stored according to the example shown in FIG. 8. In FIG. 10, the read data is stored or represented by a 128-bit array named "rdata_in[127:0]", and the data is stored starting from a first data address, which is stored or represented by a 40-bit array named "Address_0[39:0]". In FIG. 10, the initiator 802 (e.g., the processor 140) is shown sending a first read command 1004 to the error detection block 272 via the safe island interconnect 808. The safe island interconnect 808 provides the first read command 1004 to the error detection block 272 (e.g., block 902 in FIG. 9).
エラー検出ブロック272は、第3の時間(例えば、図8では「Time=T3」と識別されている)に、第1のデータ・アドレスを、揮発性メモリ・インターフェース200A(図2を参照)を介して、カーブアウト部250の第1のサブセクション252に送る。つまり、エラー検出ブロック272は、第1の読み取り命令をカーブアウト部250の第1のサブセクション252に転送する(例えば、図9のブロック904)。揮発性メモリ・インターフェース200Aは、車載SoC104のデータ・バックボーン及びメモリ・サブシステム826を介して、第1の読み取り命令をカーブアウト部250に伝達する。図10では、第1の読み取り命令は、エラー検出ブロック272によって、信号1010で第1のサブセクション252に送られている。 At a third time (e.g., identified in FIG. 8 as "Time=T3"), the error detection block 272 sends the first data address via the volatile memory interface 200A (see FIG. 2) to the first subsection 252 of the carve-out portion 250. That is, the error detection block 272 transfers the first read command to the first subsection 252 of the carve-out portion 250 (e.g., block 904 in FIG. 9). The volatile memory interface 200A communicates the first read command to the carve-out portion 250 via the data backbone and memory subsystem 826 of the vehicle SoC 104. In FIG. 10, the first read command is sent by the error detection block 272 to the first subsection 252 on signal 1010.
第1のサブセクション252は、第1のデータ・アドレスにおける第1のバイト(「byte 0」)から始まるデータをメモリから読み取り、第1のデータ・アドレスの後の後続のデータ・アドレスからの後続のバイトを読み取る。SI110は、所定のサイズ(例えば、16バイト)のデータをカーブアウト部250から読み取ることができる。次に、第1のサブセクション252は、読み取られたデータを含む応答信号1012をイニシエータ802に送る。応答信号1012は、第1のサブセクション252によってデータ・バックボーン及びメモリ・サブシステム826に送られ、データ・バックボーン及びメモリ・サブシステム826が応答信号1012を揮発性メモリ・インターフェース200A(図2を参照)に転送する。揮発性メモリ・インターフェース200Aがロック解除されると、揮発性メモリ・インターフェース200Aは応答信号1012を第1の(データ)バッファ820に転送する(例えば、図9のブロック906)。読み取られ、応答信号1012に含まれているデータは、自動的にデータ読み取り完了を示す。そのため、データ読み取り完了応答と特徴付けられ得る。第1の(データ)バッファ820がデータ書き込み完了応答に対して行うのと同様に、第1の(データ)バッファ820は、データ読み取り完了応答を、応答信号1012において予想される順序にすることができる。この時点で、この例では、データ(例えば、16バイト)が第1の単一の読み取り操作で第1のサブセクション252から読み取られており、第1の(データ)バッファ820によって予想される順序に置かれている。 The first subsection 252 reads data from the memory starting with the first byte ("byte 0") at the first data address and reads subsequent bytes from subsequent data addresses after the first data address. The SI 110 can read a predetermined size (e.g., 16 bytes) of data from the carve-out portion 250. The first subsection 252 then sends a response signal 1012 containing the read data to the initiator 802. The response signal 1012 is sent by the first subsection 252 to the data backbone and memory subsystem 826, which forwards the response signal 1012 to the volatile memory interface 200A (see FIG. 2). When the volatile memory interface 200A is unlocked, the volatile memory interface 200A forwards the response signal 1012 to the first (data) buffer 820 (e.g., block 906 in FIG. 9). The data that is read and included in the response signal 1012 automatically indicates data read completion, and may therefore be characterized as a data read completion response. Similar to what the first (data) buffer 820 does for a data write completion response, the first (data) buffer 820 may place the data read completion response in the expected order in the response signal 1012. At this point, in this example, data (e.g., 16 bytes) has been read from the first subsection 252 in a first single read operation and has been placed in the expected order by the first (data) buffer 820.
次に、エラー検出ブロック272は、第1のデータ・アドレスに基づいて第1のコード・アドレス(「Address_1」)を判断する(例えば、図9のブロック908)。図10では、第1のコード・アドレスは、第1のデータ・アドレス(「Address_0」)に(例えば)16メガバイト(「MB」)を加算することによって計算される。 The error detection block 272 then determines a first code address ("Address_1") based on the first data address (e.g., block 908 in FIG. 9). In FIG. 10, the first code address is calculated by adding (e.g.,) 16 megabytes ("MB") to the first data address ("Address_0").
次に、エラー検出ブロック272は、第4の時間(例えば、図10では「Time=T4」と識別されている)まで待機する(例えば、図9のブロック910)。第4の時間に、エラー検出ブロック272は、揮発性メモリ・インターフェース200A(図2を参照)を介して、第2のサブセクション254内の第1のコード・アドレスに記憶されているエラー検出コードを要求する。つまり、エラー検出ブロック272は、第2の読み取り命令をカーブアウト部250の第2のサブセクション254に送る(例えば、図9のブロック912)。揮発性メモリ・インターフェース200Aは、車載SoC104のデータ・バックボーン及びメモリ・サブシステム826を介して、第2の読み取り命令をカーブアウト部250に伝達する。図10では、第2の読み取り命令は、エラー検出ブロック272によって、信号1014で第2のサブセクション254に送られている。 Next, the error detection block 272 waits (e.g., block 910 in FIG. 9) until a fourth time (e.g., identified in FIG. 10 as "Time=T4"). At the fourth time, the error detection block 272 requests the error detection code stored at the first code address in the second subsection 254 via the volatile memory interface 200A (see FIG. 2). That is, the error detection block 272 sends a second read command to the second subsection 254 of the carve-out portion 250 (e.g., block 912 in FIG. 9). The volatile memory interface 200A communicates the second read command to the carve-out portion 250 via the data backbone and memory subsystem 826 of the vehicle SoC 104. In FIG. 10, the second read command is sent by the error detection block 272 to the second subsection 254 on signal 1014.
第2のサブセクション254は、第1のコード・アドレスにおける(例えば、「byte 0」の)第1のエラー検出コードを読み取り、第1のコード・アドレスの後の後続のコード・アドレスから後続のエラー検出コードを読み取ることによって、エラー検出コードをメモリから読み取る。図8及び図10の例では、エラー検出コードの各々のサイズは1バイトである。次に、第2のサブセクション254は、メモリから読み取られたエラー検出コードを含む応答信号1016をイニシエータ802に送る。図10では、エラー検出コードを伝達する信号と信号1014とは、破線矢印によって示されている。図10に示す実施例では、応答信号1016は、第2のサブセクション254によってデータ・バックボーン及びメモリ・サブシステム826に送られ、データ・バックボーン及びメモリ・サブシステム826が応答信号1016を揮発性メモリ・インターフェース200A(図2を参照)に転送する。揮発性メモリ・インターフェース200Aがロック解除されると、揮発性メモリ・インターフェース200Aは応答信号1016を第2の(コード)バッファ822に転送する(例えば、図9のブロック914)。読み取られ、応答信号1016に含まれているエラー検出コードは、自動的にコード読み取り完了を示す。そのため、コード読み取り完了応答と特徴付けられ得る。第2の(コード)バッファ822がコード書き込み完了応答に対して行うのと同様に、第2の(コード)バッファ822は、コード読み取り完了応答を、応答信号1016において予想される順序に置くことができる。この時点で、この例では、エラー検出コード(例えば、16バイト)が第2の単一の読み取り操作で第2のサブセクション254から読み取られており、第2の(コード)バッファ822によって予想される順序に置かれている。 The second subsection 254 reads the error detection codes from the memory by reading a first error detection code (e.g., "byte 0") at a first code address and reading subsequent error detection codes from subsequent code addresses after the first code address. In the examples of Figs. 8 and 10, the size of each of the error detection codes is one byte. The second subsection 254 then sends a response signal 1016 containing the error detection code read from the memory to the initiator 802. In Fig. 10, the signal carrying the error detection code and the signal 1014 are indicated by dashed arrows. In the embodiment shown in Fig. 10, the response signal 1016 is sent by the second subsection 254 to the data backbone and memory subsystem 826, which forwards the response signal 1016 to the volatile memory interface 200A (see Fig. 2). Once the volatile memory interface 200A is unlocked, it transfers the response signal 1016 to the second (code) buffer 822 (e.g., block 914 in FIG. 9). The error detection code that is read and included in the response signal 1016 automatically indicates a code read completion. As such, it may be characterized as a code read completion response. Similar to what the second (code) buffer 822 does for a code write completion response, the second (code) buffer 822 may place the code read completion response in the expected order in the response signal 1016. At this point, in this example, the error detection code (e.g., 16 bytes) has been read from the second subsection 254 in a second single read operation and has been placed in the expected order by the second (code) buffer 822.
エラー検出ブロック272が第4の時間(例えば、図10では「Time=T4」と識別されている)まで待機すると(例えば、図9のブロック910)、エラー検出ブロック272は、第1の読み取り命令と第2の読み取り命令との間に単に時間間隔を空ける。エラー検出ブロック272は、エラー検出ブロック272が応答信号1012のデータを受信した後、第2のサブセクション254からエラー検出コードを要求することができる。或いは、エラー検出ブロック272は、第2のサブセクション254からエラー検出コードを要求する前に、応答信号1012のデータを受信するまで待機しなくてもよい。つまり、第4の時間は、応答信号1012が受信されたときではなく、第1の読み取り命令が送られたときに基づいて判断され得る。 When the error detection block 272 waits (e.g., block 910 of FIG. 9) until the fourth time (e.g., identified in FIG. 10 as "Time=T4"), the error detection block 272 simply waits a time interval between the first and second read commands. The error detection block 272 may request the error detection code from the second subsection 254 after the error detection block 272 receives the data of the response signal 1012. Alternatively, the error detection block 272 may not wait until it receives the data of the response signal 1012 before requesting the error detection code from the second subsection 254. That is, the fourth time may be determined based on when the first read command is sent, rather than when the response signal 1012 is received.
前述のように、応答信号1012内でバイトは順不同であり得るため、第1の(データ)バッファ820はバイトを並べ替えることができる。同様に、第2の(コード)バッファ822は、応答信号1016内でエラー検出コードが順不同である場合に、エラー検出コードを並べ替えることができる。第1の(データ)バッファ820は、各々、データバイトのうちの1つを伝達する信号1022-0~1022-15を出力し、第2の(コード)バッファ822は、各々、エラー検出コードのうちの1つを伝達する信号1024-0~1024-15を出力する。信号1022-0~1022-15は、それぞれ信号1024-0~1024-15に対応している。第1のバッファ820及び第2のバッファ822は、信号1022-0~1022-15及び1024-0~1024-15をルーティング又は並べ替えて、データの各バイトを、バイトに対して作成されたエラー検出コードに関して既知の位置に配置することができる。図10に示す実施例では、信号1022-0~1022-15によって伝達されるバイトは、信号1024-0~1024-15によって伝達されるエラー検出コードにインターリーブされる。したがって、図10のように、データのバイトは網掛けブロックb0~b15によって表される位置に置かれ、エラー検出コードはブロックc0~c15によって表される位置に置かれる。 As previously mentioned, the first (data) buffer 820 can reorder the bytes because the bytes may be out of order in the response signal 1012. Similarly, the second (code) buffer 822 can reorder the error detection codes if they are out of order in the response signal 1016. The first (data) buffer 820 outputs signals 1022-0 to 1022-15, each of which conveys one of the data bytes, and the second (code) buffer 822 outputs signals 1024-0 to 1024-15, each of which conveys one of the error detection codes. Signals 1022-0 to 1022-15 correspond to signals 1024-0 to 1024-15, respectively. The first buffer 820 and the second buffer 822 can route or reorder the signals 1022-0 to 1022-15 and 1024-0 to 1024-15 to place each byte of data in a known location with respect to the error detection code created for the byte. In the example shown in FIG. 10, the bytes conveyed by the signals 1022-0 to 1022-15 are interleaved with the error detection codes conveyed by the signals 1024-0 to 1024-15. Thus, as in FIG. 10, the bytes of data are placed in the locations represented by the shaded blocks b0 to b15, and the error detection codes are placed in the locations represented by the blocks c0 to c15.
次に、コード生成サブブロック273がデータのバイトの各々についてチェック・コードを(例えば、上記の式1を使用して)判断する(例えば、図9のブロック916)。したがって、コード生成サブブロック273は、入力として、信号1022-0~1022-15のデータのバイトと、信号1024-0~1024-15の対応するエラー検出コードとを受信する。 Next, code generation sub-block 273 determines a check code (e.g., using Equation 1 above) for each of the bytes of data (e.g., block 916 in FIG. 9). Thus, code generation sub-block 273 receives as input the bytes of data in signals 1022-0 through 1022-15 and the corresponding error detection codes in signals 1024-0 through 1024-15.
エラー検出コードの各々について、エラー検出ブロック272は、エラー検出コードが、エラー検出コードに対応するチェック・コードと一致するかどうかを判定する(例えば、図9の判断ブロック918)。エラー検出ブロック272は、データのバイトを含むデータ信号1032とともに、図10では、ANDゲートとして実装されているものとして示されている論理コンポーネント1034に転送されるパス信号1030において一致したかどうかを示す。パス信号1030が、バイトについて記憶されているエラー検出コードは、そのバイトに対して作成されたチェック・コードと一致することを示している場合、論理コンポーネント1034は、バイトをチェック済みデータ信号1036(データのバイトのみを含む)で出力し、チェック済みデータ信号1036をイニシエータ802に転送する。一方、パス信号1030が不一致を示している場合、論理コンポーネント1034はバイトをチェック済みデータ信号1036でイニシエータ802に転送しない。代わりに、エラー検出ブロック272はバイトを破棄する、及び/又はバイトを不一致が発生したことを示す情報(例えば、ゼロ)で置換することができる。非限定的な例では、不一致を生成したバイトのビットは0に設定され得る。チェック済みデータ信号1036は、イニシエータ802に転送される(例えば、図9のブロック920)。エラー検出ブロック272は、エラー検出コードがエラー検出コードに対応するチェック・コードと一致しない場合、不一致エラーを生成し、これをイニシエータ802に送ることができる(例えば、図9のブロック922)。つまり、パス信号1030が1つ又は複数の不一致を示している場合、エラー検出ブロック272は不一致エラーを生成し、これをイニシエータ802に送ることができる。或いは又は加えて、エラー検出ブロック272は、不一致エラーを、訂正されていないエラーとしてSI障害アグリゲータ142に送る場合もある。したがって、カーブアウト部250への記憶中及び/又はカーブアウト部250からの取得中にデータ又はエラー検出コードで発生したエラーは検出され、(例えば、訂正されていないエラーとして)報告され得る。 For each error detection code, the error detection block 272 determines whether the error detection code matches the check code corresponding to the error detection code (e.g., decision block 918 in FIG. 9). The error detection block 272 indicates whether there is a match in a pass signal 1030 that is forwarded to a logic component 1034, shown in FIG. 10 as being implemented as an AND gate, along with a data signal 1032 that includes the byte of data. If the pass signal 1030 indicates that the error detection code stored for the byte matches the check code created for that byte, the logic component 1034 outputs the byte on a checked data signal 1036 (which includes only the byte of data) and forwards the checked data signal 1036 to the initiator 802. On the other hand, if the pass signal 1030 indicates a mismatch, the logic component 1034 does not forward the byte on the checked data signal 1036 to the initiator 802. Instead, the error detection block 272 may discard the byte and/or replace the byte with information (e.g., zero) indicating that a mismatch occurred. In a non-limiting example, the bit of the byte that generated the mismatch may be set to 0. The checked data signal 1036 is forwarded to the initiator 802 (e.g., block 920 of FIG. 9). The error detection block 272 may generate and send a mismatch error to the initiator 802 (e.g., block 922 of FIG. 9) if the error detection code does not match the check code corresponding to the error detection code. That is, if the path signal 1030 indicates one or more mismatches, the error detection block 272 may generate and send a mismatch error to the initiator 802. Alternatively or additionally, the error detection block 272 may send the mismatch error to the SI fault aggregator 142 as an uncorrected error. Thus, errors that occur in the data or error detection code during storage to and/or retrieval from the carve-out portion 250 may be detected and reported (e.g., as uncorrected errors).
前述のように、揮発性メモリ・インターフェース200Aには、エラー検出ブロック272と揮発性メモリ126とを接続する2つのパラレルの、及び任意選択で専用のインターフェースが含まれている場合がある。このような実施例では、エラー検出ブロック272は、エラー検出ブロック272が(例えば、信号1014に)第1のコード・アドレスを含む第2の読み取り命令を第2のサブセクション254に第2のインターフェースを介して送るのと同時に、(例えば、信号1010に)第1のデータ・アドレスを含む第1の読み取り命令を第1のサブセクション252に第1のインターフェースを介して送ることができる。さらに、第1のサブセクション252から読み取られた(例えば、且つ応答信号1012で送信される)データと、第2のサブセクション254から読み取られた(例えば、且つ応答信号1016で送信される)エラー検出コードとは、それぞれ、第1及び第2のインターフェースを介して同時に、それぞれ、第1のバッファ820及び第2のバッファ822に送信され得る。 As mentioned above, the volatile memory interface 200A may include two parallel and optionally dedicated interfaces connecting the error detection block 272 and the volatile memory 126. In such an embodiment, the error detection block 272 may send a first read command including a first data address (e.g., in signal 1010) to the first subsection 252 via the first interface at the same time that the error detection block 272 sends a second read command including a first code address (e.g., in signal 1014) to the second subsection 254 via the second interface. Furthermore, the data read from the first subsection 252 (e.g., and transmitted in response signal 1012) and the error detection code read from the second subsection 254 (e.g., and transmitted in response signal 1016) may be transmitted simultaneously via the first and second interfaces, respectively, to the first buffer 820 and the second buffer 822.
図2を参照すると、エラー検出ブロック272には、エラー検出ブロック272がカーブアウト部250からデータを読み取る及び/又はカーブアウト部にデータを書き込む必要のある時間の長さを制限する、エグレス・タイマ274及びイングレス・タイマ276などの少なくとも1つのトランザクション・タイマが含まれているか、又は接続されている場合がある。エグレス・タイマ274及び/又はイングレス・タイマ276は、アクセスがエラー検出ブロック272を通過する場合は常に自動的に開始する。例えば、イングレス・タイマ276は、エラー検出ブロック272とイニシエータ802(例えば、プロセッサ140)との間でデータが通過する場合は常に開始することができ、エグレス・タイマ274は、エラー検出ブロック272とSoCドメイン(例えば、カーブアウト部250)との間でデータが通過する場合は常に開始することができる。イングレス・タイマ276は、エラー検出ブロック272の機能をモニタリングするのに役立ち、及び/又は(例えば、エグレス・タイマ274が正常に機能していない場合に)エグレス・タイマ274のバックアップ機能を提供するのに役立ち得る。 2, the error detection block 272 may include or be connected to at least one transaction timer, such as an egress timer 274 and an ingress timer 276, that limit the amount of time the error detection block 272 must read data from and/or write data to the carve-out portion 250. The egress timer 274 and/or the ingress timer 276 may start automatically whenever an access passes through the error detection block 272. For example, the ingress timer 276 may start whenever data passes between the error detection block 272 and the initiator 802 (e.g., the processor 140), and the egress timer 274 may start whenever data passes between the error detection block 272 and the SoC domain (e.g., the carve-out portion 250). Ingress timer 276 may be useful for monitoring the functionality of error detection block 272 and/or for providing a backup function for egress timer 274 (e.g., if egress timer 274 is not functioning properly).
書き込み操作中、(例えば、図7のブロック702において)イニシエータ802がエラー検出ブロック272にデータを渡してカーブアウト部250に書き込むと、イングレス・タイマ276が開始し得る。その後、(例えば、図7のブロック708において)データがエラー検出ブロック272及び/又はSIドメインから出たときに、エグレス・タイマ274が開始し得る。エグレス・タイマ274は、エラー検出ブロック272によって、応答(例えば、図8に示す応答信号828)がカーブアウト部250から受信されると、停止又はリセットされ得る。その後、エラー検出ブロック272によって、応答(例えば、図8に示す応答信号828)がイニシエータ802(図8を参照)に転送されると、イングレス・タイマ276が停止又はリセットされ得る。エグレス・タイマ274が第1の閾値時間を超えて時間が経過したことと、エラー検出ブロック272が応答を受信していないこととを示している場合、これはイニシエータ802がカーブアウト部250から応答(例えば、図8に示す応答信号828)を受信していないことを意味し、イニシエータ802(例えば、プロセッサ140)は、エグレス・タイムアウト・エラーを生成する。イングレス・タイマ276が第2の閾値時間を超えて時間が経過したことと、エラー検出ブロック272がイニシエータ802に応答を送信していないこととを示している場合、これはイニシエータ802がカーブアウト部250から応答を受信していないことを意味し、イニシエータ802はイングレス・タイムアウト・エラーを生成する。 During a write operation, when the initiator 802 passes data to the error detection block 272 to write to the carve-out portion 250 (e.g., at block 702 in FIG. 7), the ingress timer 276 may be started. Thereafter, when the data leaves the error detection block 272 and/or the SI domain (e.g., at block 708 in FIG. 7), the egress timer 274 may be started. The egress timer 274 may be stopped or reset by the error detection block 272 when a response (e.g., response signal 828 shown in FIG. 8) is received from the carve-out portion 250. The ingress timer 276 may be stopped or reset by the error detection block 272 when a response (e.g., response signal 828 shown in FIG. 8) is forwarded to the initiator 802 (see FIG. 8). If the egress timer 274 indicates that the time has elapsed beyond the first threshold time and the error detection block 272 indicates that no response has been received, this means that the initiator 802 has not received a response (e.g., the response signal 828 shown in FIG. 8) from the carve-out portion 250, and the initiator 802 (e.g., the processor 140) generates an egress timeout error. If the ingress timer 276 indicates that the time has elapsed beyond the second threshold time and the error detection block 272 indicates that no response has been sent to the initiator 802, this means that the initiator 802 has not received a response from the carve-out portion 250, and the initiator 802 generates an ingress timeout error.
読み取り操作中、(例えば、図9のブロック902において)エラー検出ブロック272がイニシエータ802から読み取り要求を受信すると、イングレス・タイマ276が起動し得る。次に、エラー検出ブロック272が、(例えば、図9のブロック904において)カーブアウト部250から、第1のデータ・アドレスに記憶されているデータを要求すると、エグレス・タイマ274が起動し得る。エグレス・タイマ274は、(例えば、図9のブロック906において)エラー検出ブロック272によって、カーブアウト部250からデータを受信すると、停止又はリセットされ得る。その後、エグレス・タイマ276は、(例えば、図9のブロック920において)エラー検出ブロック272によって、データがイニシエータ802に転送されると、停止又はリセットされ得る。エグレス・タイマ274が第1の閾値時間が経過していて、エラー検出ブロック272がカーブアウト部250からデータを受信していないことを示している場合、これはイニシエータ802がエラー検出ブロック272から(例えば、図10に示すチェック済みデータ信号1036で)データを受信していないことを意味し、イニシエータ802は、エグレス・タイムアウト・エラーを生成する。イングレス・タイマ276が第2の閾値時間を超えて時間が経過したことと、エラー検出ブロック272がイニシエータ802にデータを送信していないこととを示している場合、これはイニシエータ802がカーブアウト部250からデータを受信していないことを意味し、イニシエータ802はイングレス・タイムアウト・エラーを生成する。 During a read operation, the ingress timer 276 may be started when the error detection block 272 receives a read request from the initiator 802 (e.g., at block 902 of FIG. 9). The egress timer 274 may then be started when the error detection block 272 requests the data stored at the first data address from the carve-out portion 250 (e.g., at block 904 of FIG. 9). The egress timer 274 may be stopped or reset when the error detection block 272 receives the data from the carve-out portion 250 (e.g., at block 906 of FIG. 9). The egress timer 276 may then be stopped or reset when the error detection block 272 forwards the data to the initiator 802 (e.g., at block 920 of FIG. 9). If the egress timer 274 indicates that the first threshold time has elapsed and the error detection block 272 has not received data from the carve-out portion 250, this means that the initiator 802 has not received data from the error detection block 272 (e.g., in the checked data signal 1036 shown in FIG. 10), and the initiator 802 generates an egress timeout error. If the ingress timer 276 indicates that the second threshold time has elapsed and the error detection block 272 has not sent data to the initiator 802, this means that the initiator 802 has not received data from the carve-out portion 250, and the initiator 802 generates an ingress timeout error.
図11は、いくつかの実施例による、エラー検出ブロック272にエグレス・タイマ274及びイングレス・タイマ276(図2を参照)が含まれている、又はこれらに接続されている場合に、エラー検出ブロック272(図2、図8、及び図10を参照)によって生成されるエラー通知を示すブロック図の図である。図11では、イニシエータ802(図8及び図10を参照)が、第1の書き込み命令804(図8を参照)か又は第1の読み取り命令1004(図10を参照)のいずれかを含む信号1102を、エラー検出ブロック272に送る。前述したように、エグレス・タイマ274は、書き込み操作中に、データがエラー検出ブロック272及び/又はSIドメインから出ると起動し、エグレス・タイマ274は、読み取り操作中に、エラー検出ブロック272がカーブアウト部250から、第1のデータ・アドレスに記憶されているデータを要求すると起動し得る。ブロック1104は、エグレス・タイマ274がタイムアウトしたことを示す。エグレス・タイマ274は、例えば、エラー検出ブロック272が書き込み操作中にカーブアウト部250から応答(例えば、図8に示す応答信号828)を受信しておらず第1の閾値時間を超えて時間が経過した場合に、タイムアウトし得る。別の非限定的な例として、エグレス・タイマ274は、エラー検出ブロック272が読み取り操作中にエラー検出ブロック272からデータを(例えば、図10に示す応答信号1012で)受信しておらず第1の閾値時間を超えて時間が経過した場合に、タイムアウトし得る。エグレス・タイマ274がタイムアウトすると、イニシエータ802(例えば、プロセッサ140)がエグレス・タイムアウト・エラー1106を生成し、エグレス・タイムアウト・エラー1106をエラー・ロガー1108に転送する。一方、エグレス・タイマ274がタイムアウトしていない場合、エグレス・タイマ274は停止又はリセットされ得る。これは、エラー検出ブロック272が書き込み操作中にカーブアウト部250から応答(例えば、応答信号828)を受信するか、又は、第1の閾値時間が経過する前に読み取り操作中にカーブアウト部250からデータ(例えば、応答信号1012で)を受信する場合に、起こる可能性がある。 11 is a block diagram illustrating an error notification generated by the error detection block 272 (see FIGS. 2, 8, and 10) when the error detection block 272 includes or is connected to an egress timer 274 and an ingress timer 276 (see FIG. 2) according to some embodiments. In FIG. 11, an initiator 802 (see FIGS. 8 and 10) sends a signal 1102 including either a first write command 804 (see FIG. 8) or a first read command 1004 (see FIG. 10) to the error detection block 272. As previously described, the egress timer 274 may start during a write operation when data leaves the error detection block 272 and/or the SI domain, and the egress timer 274 may start during a read operation when the error detection block 272 requests data stored at a first data address from the carve-out portion 250. Block 1104 indicates that the egress timer 274 has timed out. The egress timer 274 may time out, for example, if the error detection block 272 does not receive a response (e.g., response signal 828 shown in FIG. 8) from the carve-out portion 250 during a write operation and the time has exceeded a first threshold time. As another non-limiting example, the egress timer 274 may time out if the error detection block 272 does not receive data (e.g., in response signal 1012 shown in FIG. 10) from the error detection block 272 during a read operation and the time has exceeded a first threshold time. When the egress timer 274 times out, the initiator 802 (e.g., processor 140) generates an egress timeout error 1106 and forwards the egress timeout error 1106 to the error logger 1108. On the other hand, if the egress timer 274 has not timed out, the egress timer 274 may be stopped or reset. This may occur if the error detection block 272 receives a response (e.g., response signal 828) from the carve-out portion 250 during a write operation, or receives data (e.g., in response signal 1012) from the carve-out portion 250 during a read operation before the first threshold time has elapsed.
前述のように、イングレス・タイマ276は、書き込み操作中に(例えば、図7のブロック702において)イニシエータ802がエラー検出ブロック272にデータを渡してカーブアウト部250に書き込むと起動し得る。又は、イングレス・タイマ276は、(例えば、図9のブロック902において)読み取り操作中にエラー検出ブロック272がイニシエータ802から読み取り要求を受信すると、起動し得る。したがって、イングレス・タイマ276(図2を参照)は、信号1102に第1の読み取り命令804(図8を参照)又は第1の読み取り命令1004(図10を参照)が含まれており、その命令がエラー検出ブロック272(図2、図8、及び図10を参照)によって受信されると起動し得る。ブロック1114は、イングレス・タイマ276がタイムアウトしたことを示す。イングレス・タイマ276は、例えば、第2の閾値時間を超えて時間が経過していて、書き込み操作中にイニシエータ802(図8を参照)がカーブアウト部250から応答(例えば、図8に示す応答信号828)を受信しなかった場合にタイムアウトし得る。別の非限定的な例として、イングレス・タイマ276は、第2の閾値時間を超えて時間が経過しており、読み取り操作中にイニシエータ802がカーブアウト部250からデータ(例えば、図10に示すチェック済みデータ信号1036)を受信していない場合にタイムアウトし得る。イングレス・タイマ276がタイムアウトすると、イニシエータ802はイングレス・タイムアウト・エラー1116を生成し、イングレス・タイムアウト・エラー1116をエラー・ロガー1108に転送する。一方、イングレス・タイマ276がタイムアウトしていない場合、イングレス・タイマ276は停止又はリセットされ得る。これは、エラー検出ブロック272が書き込み操作中に応答(例えば、応答信号828)をイニシエータ802に転送するか、又はエラー検出ブロック272が読み取り操作中にデータ(例えば、チェック済みデータ信号1036)をイニシエータ802に転送する場合に起こる可能性がある。 As previously mentioned, the ingress timer 276 may start during a write operation when the initiator 802 passes data to the error detection block 272 to write to the carve-out portion 250 (e.g., at block 702 of FIG. 7). Alternatively, the ingress timer 276 may start during a read operation when the error detection block 272 receives a read request from the initiator 802 (e.g., at block 902 of FIG. 9). Thus, the ingress timer 276 (see FIG. 2) may start when the signal 1102 includes a first read instruction 804 (see FIG. 8) or a first read instruction 1004 (see FIG. 10) that is received by the error detection block 272 (see FIGS. 2, 8, and 10). Block 1114 indicates that the ingress timer 276 has timed out. The ingress timer 276 may time out, for example, if more than the second threshold time has elapsed and the initiator 802 (see FIG. 8) has not received a response (e.g., response signal 828 shown in FIG. 8) from the carve-out 250 during a write operation. As another non-limiting example, the ingress timer 276 may time out if more than the second threshold time has elapsed and the initiator 802 has not received data (e.g., checked data signal 1036 shown in FIG. 10) from the carve-out 250 during a read operation. If the ingress timer 276 times out, the initiator 802 generates an ingress timeout error 1116 and forwards the ingress timeout error 1116 to the error logger 1108. On the other hand, if the ingress timer 276 has not timed out, the ingress timer 276 may be stopped or reset. This can occur when the error detection block 272 transfers a response (e.g., response signal 828) to the initiator 802 during a write operation, or when the error detection block 272 transfers data (e.g., checked data signal 1036) to the initiator 802 during a read operation.
ブロック1124は、エラー検出ブロック272(図2、図8、及び図10を参照)のコード生成サブブロック273(図2、図8、及び図10を参照)が、エラー検出コード又はチェック・コードの生成中にエラーが発生したことを示すコード生成/チェック・エラー1126を生成することができることを示している。いくつかの実施例では、コード生成/チェック・エラー1126は、不一致が発生したことを示すために使用され得る。非限定的な例として、信号1102に第1の書き込み命令804が含まれている場合、コード生成サブブロック273はエラー検出コードを生成している間にコード生成エラーを生成することができる。他の非限定的な例として、信号1102に第1の読み取り命令1004が含まれている場合、エラー検出ブロック272は、チェック・コードを生成している間に不一致エラー及び/又はコード生成エラーを生成することができる。これは、コード生成/チェック・エラー1126としてエラー・ロガー1108に転送される。 Block 1124 indicates that the code generation sub-block 273 (see FIGS. 2, 8, and 10) of the error detection block 272 (see FIGS. 2, 8, and 10) may generate a code generation/check error 1126 indicating that an error occurred during generation of the error detection code or check code. In some embodiments, the code generation/check error 1126 may be used to indicate that a mismatch occurred. As a non-limiting example, if the signal 1102 includes a first write instruction 804, the code generation sub-block 273 may generate a code generation error while generating the error detection code. As another non-limiting example, if the signal 1102 includes a first read instruction 1004, the error detection block 272 may generate a mismatch error and/or a code generation error while generating the check code, which is forwarded to the error logger 1108 as a code generation/check error 1126.
エラー・ロガー1108は、エラー1106、1116、及び1126をエラー通知1130に集約する障害アグリゲータとして機能することができ、エラー・ロガー1108はこの通知をSI障害アグリゲータ142に送る。 The error logger 1108 can act as a fault aggregator that aggregates the errors 1106, 1116, and 1126 into an error notification 1130, which the error logger 1108 sends to the SI fault aggregator 142.
車載SoC104が最初にブートしたときに、SI110のプロセッサ140は、カーブアウト部250からデータをプリフェッチしようと試みることができる。プリフェッチとは、カーブアウト部250からのデータの非意図的な読み取りの一種であると特徴付けられ得る。共有の揮発性メモリ126は揮発性であるため、この時点で、カーブアウト部250は、エラー検出コードがないか、又は不一致エラー検出コードに関連付けられた初期化されていないデータを記憶している可能性がある。エラー検出ブロック272が不一致エラーを生成しないようにするために、SI110(例えば、プロセッサ140、DMAエンジン402など)は、プロセッサ140がプリフェッチする又はプリフェッチする可能性のあるデータについて、1つ又は複数のエラー検出コードをカーブアウト部250に書き込むことができる。非限定的な例として、SI110は初期データをカーブアウト部250に書き込むことができる。これにより、エラー検出ブロック272のハードウェアは、コード・アドレスに各々関連付けられている、初期データの1つ又は複数のエラー検出コードを判断する。次に、SI110によって、カーブアウト部250が、各エラー検出コードをその関連するコード・アドレスに記憶することができる。したがって、プリフェッチ操作中に、第2のサブセクション254によって記憶されるエラー検出コードは第1のサブセクション252に記憶されているデータに対応し、エラー検出ブロック272は不一致エラーを生成しない。 When the vehicle SoC 104 first boots, the processor 140 of the SI 110 may attempt to prefetch data from the carve-out portion 250. A prefetch may be characterized as a type of unintentional reading of data from the carve-out portion 250. Because the shared volatile memory 126 is volatile, at this point the carve-out portion 250 may store no error detection code or uninitialized data associated with a mismatch error detection code. To prevent the error detection block 272 from generating a mismatch error, the SI 110 (e.g., the processor 140, the DMA engine 402, etc.) may write one or more error detection codes to the carve-out portion 250 for data that the processor 140 prefetches or may prefetch. As a non-limiting example, the SI 110 may write initial data to the carve-out portion 250. This causes the hardware of the error detection block 272 to determine one or more error detection codes of the initial data, each associated with a code address. SI 110 then enables carve-out section 250 to store each error detection code at its associated code address. Thus, during a prefetch operation, the error detection code stored by second subsection 254 corresponds to the data stored in first subsection 252, and error detection block 272 does not generate a mismatch error.
図2を参照すると、SI110は、車載プラットフォーム100(図1を参照)がカーブアウト部250を必要としない場合、コード生成サブブロック273(図2、図8、及び図10を参照)及び/又はエラー検出ブロック272(例えば、ソフトウェア・レジスタ書き込みを使用して)をオフにすることができる。例えば、SI110は、揮発性メモリ126が車載プラットフォーム100に十分なリスク・レベルで動作している場合、コード生成サブブロック273及び/又はエラー検出ブロック272をオフにすることができる。 Referring to FIG. 2, SI 110 may turn off code generation sub-block 273 (see FIGS. 2, 8, and 10) and/or error detection block 272 (e.g., using a software register write) if vehicle platform 100 (see FIG. 1) does not require carve-out portion 250. For example, SI 110 may turn off code generation sub-block 273 and/or error detection block 272 if volatile memory 126 is operating at a sufficient risk level for vehicle platform 100.
本明細書で説明されるこの配置及び他の配置は、実例としてのみ記載されていることを理解すべきである。他の配置及び要素(例えば、マシン、インターフェース、機能、順序、機能のグループ分けなど)を、示されているものに加えて又は代わりに使用することができ、また、いくつかの要素を完全に省略することもできる。さらに、本明細書で説明される要素のうちの多くは、個別の若しくは分散されたコンポーネントとして、又は他のコンポーネントと併せて、並びに任意の適切な組み合わせ及び場所で実装され得る機能的エンティティである。本明細書においてエンティティによって実行されていると説明される様々な機能は、ハードウェア、ファームウェア、及び/又はソフトウェアによって実行され得る。例えば、メモリに記憶された命令を実行するプロセッサによって、様々な機能が実行され得る。 It should be understood that this and other arrangements described herein are provided by way of example only. Other arrangements and elements (e.g., machines, interfaces, functions, sequences, groupings of functions, etc.) can be used in addition to or instead of those shown, and some elements can be omitted entirely. Furthermore, many of the elements described herein are functional entities that can be implemented as separate or distributed components, or in conjunction with other components, and in any suitable combination and location. Various functions described herein as being performed by entities can be performed by hardware, firmware, and/or software. For example, various functions can be performed by a processor executing instructions stored in memory.
自律車両の例
図12は、本開示のいくつかの実施例による、自律車両の例1200の図である。自律車両1200(或いは、本明細書では「車両1200」とも呼ぶ)には、自動車といった乗用車、トラック、バス、ファースト・レスポンダ車両、シャトル、電動又はモータ付き自転車、オートバイ、消防車、警察車両、救急車、ボート、建設用車両、潜水艦、ドローン、及び/又は別のタイプの車両(例えば、無人及び/又は1人若しくは複数の乗客を収容できる)が含まれ得るが、これらに限定されない。自律車両は、一般に、米国運輸省の一部門である幹線道路交通安全局(NHTSA:National Highway Traffic Safety Administration)と、自動車技術者協会(SAE)の非特許文献1とによって定義される自動化レベルに関して説明される。車両1200は、SAEによって定義されている自律運転レベルのレベル2~レベル5のうちの1つ又は複数に従って機能することができる。例えば、車両1200は、実施例に応じて、部分運転自動化(レベル2)、条件付き自動化(レベル3)、高自動化(レベル4)、及び/又は完全自動化(レベル5)が可能であり得る。
12 is a diagram of an example autonomous vehicle 1200 according to some embodiments of the present disclosure. The autonomous vehicle 1200 (alternatively referred to herein as "vehicle 1200") may include, but is not limited to, a passenger vehicle such as a car, a truck, a bus, a first responder vehicle, a shuttle, an electric or motorized bicycle, a motorcycle, a fire engine, a police vehicle, an ambulance, a boat, a construction vehicle, a submarine, a drone, and/or another type of vehicle (e.g., unmanned and/or capable of accommodating one or more passengers). Autonomous vehicles are generally described in terms of automation levels as defined by the National Highway Traffic Safety Administration (NHTSA), a division of the U.S. Department of Transportation, and the Society of Automotive Engineers (SAE) in their report on autonomous driving. The vehicle 1200 may function according to one or more of the autonomous driving levels Level 2 through Level 5 as defined by the SAE. For example, vehicle 1200 may be capable of partial driving automation (Level 2), conditional automation (Level 3), high automation (Level 4), and/or full automation (Level 5), depending on the embodiment.
車両1200には、シャシー、車両ボディ、ホイール(例えば、2個、4個、6個、8個、18個など)、タイヤ、車軸、及び車両の他のコンポーネントなどのコンポーネントが含まれ得る。車両1200には、内燃エンジン、ハイブリッド発電装置、完全電気エンジン、及び/又は別の推進システム・タイプなどの推進システム1250が含まれ得る。推進システム1250は、車両1200の推進力を有効にするために、トランスミッションを含み得る車両1200のドライブ・トレインに接続され得る。推進システム1250は、スロットル/アクセル1252からの信号の受信に応じて制御され得る。 Vehicle 1200 may include components such as a chassis, vehicle body, wheels (e.g., 2, 4, 6, 8, 18, etc.), tires, axles, and other components of the vehicle. Vehicle 1200 may include a propulsion system 1250, such as an internal combustion engine, a hybrid power plant, a fully electric engine, and/or another propulsion system type. Propulsion system 1250 may be connected to a drive train of vehicle 1200, which may include a transmission, to enable propulsion of vehicle 1200. Propulsion system 1250 may be controlled in response to receiving a signal from throttle/accelerator 1252.
ハンドルを含み得るステアリング・システム1254を使用して、推進システム1250が動作しているとき(例えば、車両が動いているとき)に車両1200を(例えば、所望の経路又はルートに沿って)誘導することができる。ステアリング・システム1254は、ステアリング・アクチュエータ1256から信号を受信し得る。ハンドルは、完全自動化(レベル5)機能では任意選択であり得る。 A steering system 1254, which may include a steering wheel, may be used to guide the vehicle 1200 (e.g., along a desired path or route) when the propulsion system 1250 is operating (e.g., when the vehicle is moving). The steering system 1254 may receive signals from a steering actuator 1256. The steering wheel may be optional for fully automated (Level 5) functionality.
ブレーキ・センサ・システム1246を使用して、ブレーキ・アクチュエータ1248及び/又はブレーキ・センサからの信号の受信に応じて、車両ブレーキを作動させることができる。 The brake sensor system 1246 may be used to actuate the vehicle brakes in response to receiving signals from the brake actuator 1248 and/or brake sensor.
1つ又は複数のCPU、システム・オン・チップ(SoC)1204(図14)、及び/又はGPUを含み得るコントローラ1236は、車両1200の1つ又は複数のコンポーネント及び/又はシステムに信号(例えば、コマンドを表す)を提供することができる。例えば、コントローラは、信号を送って、1つ又は複数のブレーキ・アクチュエータ1248を介して車両ブレーキを動作させる、1つ又は複数のステアリング・アクチュエータ1256を介してステアリング・システム1254を動作させる、及び/又は1つ又は複数のスロットル/アクセル1252を介して推進システム1250を動作させることができる。コントローラ1236は、センサ信号を処理する1つ又は複数のオンボード(例えば、統合された)コンピューティング・デバイス(例えば、スーパーコンピュータ)が含まれており、操作コマンド(例えば、コマンドを表す信号)を出力して、自律運転を可能にする及び/又は車両1200を運転する人間の運転者を支援することができる。コントローラ1236には、自律運転機能用の第1のコントローラ1236、機能安全機能用の第2のコントローラ1236、人工知能機能(例えば、コンピュータ・ビジョン)用の第3のコントローラ1236、インフォテインメント機能用の第4のコントローラ1236、緊急状態での冗長性用の第5のコントローラ1236、及び/又は他のコントローラが含まれ得る。いくつかの例では、単一のコントローラ1236が上記の機能のうちの2つ以上を処理してもよく、2つ以上のコントローラ1236が単一の機能を処理してもよく、及び/又はその任意の組み合わせであってもよい。 The controller 1236, which may include one or more CPUs, system-on-chip (SoC) 1204 (FIG. 14), and/or GPUs, may provide signals (e.g., representing commands) to one or more components and/or systems of the vehicle 1200. For example, the controller may send signals to operate vehicle brakes via one or more brake actuators 1248, to operate a steering system 1254 via one or more steering actuators 1256, and/or to operate a propulsion system 1250 via one or more throttle/accelerators 1252. The controller 1236 may include one or more on-board (e.g., integrated) computing devices (e.g., supercomputers) that process sensor signals and may output operational commands (e.g., signals representing commands) to enable autonomous driving and/or assist a human driver in driving the vehicle 1200. The controllers 1236 may include a first controller 1236 for autonomous driving functions, a second controller 1236 for functional safety functions, a third controller 1236 for artificial intelligence functions (e.g., computer vision), a fourth controller 1236 for infotainment functions, a fifth controller 1236 for redundancy in emergency situations, and/or other controllers. In some examples, a single controller 1236 may handle two or more of the above functions, two or more controllers 1236 may handle a single function, and/or any combination thereof.
コントローラ1236は、1つ又は複数のセンサから受信したセンサ・データ(例えば、センサ入力)に応じて、車両1200の1つ若しくは複数のコンポーネント及び/又はシステムを制御するための信号を提供することができる。センサ・データは、例えば、グローバル・ナビゲーション衛星システム・センサ1258(例えば、全地球測位システム・センサ)、RADARセンサ1260、超音波センサ1262、LIDARセンサ1264、慣性測定ユニット(IMU:Inertial Measurement Unit)センサ1266(例えば、加速度計、ジャイロスコープ、磁気コンパス、磁力計など)、マイク1296、ステレオ・カメラ1268、ワイドビュー・カメラ1270(例えば、魚眼カメラ)、赤外線カメラ1272、サラウンド・カメラ1274(例えば、360度カメラ)、長距離及び/又は中距離カメラ1298、(例えば、車両1200の速度を測定するための)速度センサ1244、振動センサ1242、ステアリング・センサ1240、(例えば、ブレーキ・センサ・システム1246の一部としての)ブレーキ・センサ1246、及び/又は他のセンサ・タイプであり、限定されることなく、これらから受信され得る。 Controller 1236 may provide signals to control one or more components and/or systems of vehicle 1200 in response to sensor data (e.g., sensor inputs) received from one or more sensors. Sensor data may include, for example, global navigation satellite system sensors 1258 (e.g., global positioning system sensors), RADAR sensors 1260, ultrasonic sensors 1262, LIDAR sensors 1264, inertial measurement units (IMUs), and the like. The information may be received from, but is not limited to, a vehicle speed sensor 1244 (e.g., for measuring the speed of the vehicle 1200), a vibration sensor 1242, a steering sensor 1240, a brake sensor 1246 (e.g., as part of a brake sensor system 1246), and/or other sensor types.
コントローラ1236のうちの1つ又は複数が、車両1200の計器群1232から入力(例えば、入力データによって表される)を受信し、ヒューマンマシン・インターフェース(HMI:Human-Machine Interface)ディスプレイ1234、可聴アナンシエータ、スピーカを介して、及び/又は車両1200の他のコンポーネントを介して、(例えば、出力データ、表示データなどで表される)出力を提供することができる。出力には、車速、速度、時間、マップ・データ(例えば、図14のHDマップ1222)、位置データ(例えば、マップ上などの車両1200の位置)、方向、他の車両の位置(例えば、占有グリッド)、物体に関する情報、及びコントローラ1236によって知覚される物体のステータスなどの情報が含まれ得る。例えば、HMIディスプレイ1234には、1つ又は複数の物体(例えば、道路標識、注意標識、信号機の変化など)の存在に関する情報、及び/又は車両が行った、行っている、若しくはこれから行う運転操作に関する情報(例えば、ここで車線変更する、3キロメートル(約2マイル)先の34B出口を出るなど)が表示され得る。 One or more of the controllers 1236 may receive inputs (e.g., represented by input data) from the instrument cluster 1232 of the vehicle 1200 and provide outputs (e.g., represented by output data, display data, etc.) via a Human Machine Interface (HMI) display 1234, an audible annunciator, a speaker, and/or via other components of the vehicle 1200. The outputs may include information such as vehicle speed, speed, time, map data (e.g., HD map 1222 of FIG. 14), position data (e.g., the position of the vehicle 1200 on a map, etc.), direction, the positions of other vehicles (e.g., occupancy grid), information about objects, and the status of objects as perceived by the controllers 1236. For example, the HMI display 1234 may display information regarding the presence of one or more objects (e.g., road signs, caution signs, traffic light changes, etc.) and/or information regarding a driving maneuver that the vehicle has performed, is performing, or will perform (e.g., changing lanes here, taking exit 34B in 3 kilometers (approximately 2 miles), etc.).
車両1200にはさらに、ネットワーク・インターフェース1224が含まれている。これは1つ若しくは複数のワイヤレス・アンテナ1226及び/又はモデムを使用して、1つ又は複数のネットワークを介して通信することができる。例えば、ネットワーク・インターフェース1224は、LTE、WCDMA(登録商標)、UMTS、GSM、CDMA2000などを介した通信が可能である。ワイヤレス・アンテナ1226はまた、ブルートゥース(登録商標)、ブルートゥース(登録商標)LE、Z-Wave、ジグビーなどのローカル・エリア・ネットワーク、及び/又はLoRaWAN、SigFoxなどの低電力ワイド・エリア・ネットワーク(LPWAN)を使用して、環境内の物体(例えば、車両、モバイル・デバイスなど)間の通信も可能にし得る。 The vehicle 1200 further includes a network interface 1224, which may communicate over one or more networks using one or more wireless antennas 1226 and/or a modem. For example, the network interface 1224 may be capable of communication over LTE, WCDMA, UMTS, GSM, CDMA2000, etc. The wireless antenna 1226 may also enable communication between objects (e.g., vehicles, mobile devices, etc.) in the environment using local area networks such as Bluetooth, Bluetooth LE, Z-Wave, ZigBee, etc., and/or low power wide area networks (LPWANs) such as LoRaWAN, SigFox, etc.
前述のように、少なくともいくつかの実施例では、車載プラットフォーム100(図1を参照)は、自律車両1200のコンポーネントであり得る。このような実施例では、コントローラ1236に車載SoC104が含まれている。 As previously mentioned, in at least some embodiments, the vehicle platform 100 (see FIG. 1) may be a component of an autonomous vehicle 1200. In such embodiments, the controller 1236 includes the vehicle SoC 104.
図13は、本開示のいくつかの実施例による、図12の自律車両1200の例のカメラ位置及び視野の一例である。カメラとそれぞれの視野は、1つの実施例であり、限定を意図したものではない。例えば、追加及び/又は代替のカメラを含めることができ、並びに/或いはカメラを車両1200の別の位置に設置することができる。 13 is an example of camera positions and fields of view for the example autonomous vehicle 1200 of FIG. 12, according to some embodiments of the present disclosure. The cameras and respective fields of view are one example and are not intended to be limiting. For example, additional and/or alternative cameras may be included and/or the cameras may be located at different locations on the vehicle 1200.
カメラのカメラ・タイプには、車両1200のコンポーネント及び/又はシステムとの使用に適応され得るデジタル・カメラが含まれ得るが、これに限定されない。カメラは、自動車安全水準(ASIL)B及び/又は別のASILで動作し得る。カメラ・タイプは、実施例に応じて1秒当たり60フレーム(fps:frames per second)、120fps、240fpsなどの任意の画像キャプチャ・レートが可能であり得る。カメラはロール・シャッタ、グローバル・シャッタ、別のタイプのシャッタ、又はそれらの組み合わせを使用することが可能であり得る。いくつかの実例では、カラー・フィルタ・アレイには、レッド・クリア・クリア・クリア(RCCC:Red Clear Clear Clear)カラー・フィルタ・アレイ、レッド・クリア・クリア・ブルー(RCCB:Red Clear Clear Blue)カラー・フィルタ・アレイ、レッド・ブルー・グリーン・クリア(RBGC:Red Blue Green Clear)カラー・フィルタ・アレイ、Foveon X3カラー・フィルタ・アレイ、Bayerセンサ(RGGB)カラー・フィルタ・アレイ、モノクロ・センサ・カラー・フィルタ・アレイ、及び/又は別のタイプのカラー・フィルタ・アレイが含まれ得る。いくつかの実施例では、RCCC、RCCB、及び/又はRBGCカラー・フィルタ・アレイを有するカメラなどのクリア・ピクセル・カメラを使用して、光の感受性を高めることができる。 The camera type of the camera may include, but is not limited to, a digital camera that may be adapted for use with components and/or systems of the vehicle 1200. The camera may operate at Automotive Safety Level (ASIL) B and/or another ASIL. The camera type may be capable of any image capture rate, such as 60 frames per second (fps), 120 fps, 240 fps, etc., depending on the embodiment. The camera may be capable of using a rolling shutter, a global shutter, another type of shutter, or a combination thereof. In some examples, the color filter array may include a Red Clear Clear Clear (RCCC) color filter array, a Red Clear Clear Blue (RCCB) color filter array, a Red Blue Green Clear (RBGC) color filter array, a Foveon X3 color filter array, a Bayer sensor (RGGB) color filter array, a monochrome sensor color filter array, and/or another type of color filter array. In some embodiments, a clear pixel camera, such as a camera having a RCCC, RCCB, and/or RBGC color filter array, may be used to increase light sensitivity.
いくつかの実例では、これらのカメラのうちの1つ又は複数を使用して、高度運転者支援システム(ADAS)機能を(例えば、冗長設計又はフェイルセーフ設計の一部として)実行することができる。例えば、多機能モノ・カメラを取り付けて、車線逸脱警報、交通標識アシスト、及びインテリジェント・ヘッドランプ・コントロールなどの機能を提供することができる。これらのカメラのうちの1つ又は複数(例えば、すべてのカメラ)は、同時に画像データ(例えば、ビデオ)を記録して提供することができる。 In some instances, one or more of these cameras may be used to perform Advanced Driver Assistance Systems (ADAS) functions (e.g., as part of a redundant or fail-safe design). For example, a multi-function mono camera may be installed to provide features such as lane departure warning, traffic sign assist, and intelligent headlamp control. One or more of these cameras (e.g., all of the cameras) may simultaneously record and provide image data (e.g., video).
これらのカメラのうちの1つ又は複数は、カスタム設計(3Dプリントされた)アセンブリなどの取り付けアセンブリに取り付けられて、カメラの画像データ・キャプチャ機能を妨げる可能性のある、車の内部からの迷光及び反射(例えば、フロントガラス・ミラーに反射したダッシュボードからの反射)を遮断することができる。サイドミラー取り付けアセンブリを参照すると、サイドミラー・アセンブリは、カメラ取り付けプレートがサイドミラーの形状と一致するように、カスタム3Dプリントすることができる。いくつかの実例では、カメラは、サイドミラーに統合されていてもよい。サイドビュー・カメラの場合、カメラはキャビンの各コーナーにある4本の柱内に統合されていてもよい。 One or more of these cameras can be mounted on a mounting assembly, such as a custom designed (3D printed) assembly, to block stray light and reflections from the interior of the vehicle (e.g., reflections from the dashboard reflected in the windshield mirror) that may interfere with the camera's image data capture capabilities. With reference to a side mirror mounting assembly, the side mirror assembly can be custom 3D printed such that the camera mounting plate matches the shape of the side mirror. In some instances, the camera may be integrated into the side mirror. In the case of a side view camera, the camera may be integrated into four pillars at each corner of the cabin.
車両1200の前の環境の部分を含む視野を有するカメラ(例えば、前面カメラ)をサラウンド・ビューに使用して、前向きの経路及び障害物を識別するのに役立ち、1つ又は複数のコントローラ1236及び/又は制御SoCを用いて、占有グリッドの生成及び/又は優先車両経路の判断に不可欠な情報を提供するのに役立ち得る。前面カメラを使用して、緊急ブレーキ、歩行者検知、及び衝突回避など、LIDARと同じADAS機能のうちの多くを実行することができる。前面カメラはまた、車線逸脱警報(LDW:Lane Departure Warning)、自律クルーズ制御(ACC:Autonomous Cruise Control)、及び/又は交通標識認識などの他の機能などのADAS機能及びシステムにも使用することができる。 A camera with a field of view that includes a portion of the environment in front of the vehicle 1200 (e.g., a front camera) may be used for surround view to help identify the path ahead and obstacles, and to provide information essential for generating an occupancy grid and/or determining preferred vehicle paths using one or more controllers 1236 and/or control SoCs. The front camera can be used to perform many of the same ADAS functions as LIDAR, such as emergency braking, pedestrian detection, and collision avoidance. The front camera can also be used for ADAS functions and systems such as Lane Departure Warning (LDW), Autonomous Cruise Control (ACC), and/or other functions such as traffic sign recognition.
例えば、相補型金属酸化膜半導体(CMOS:Complementary Metal Oxide Semiconductor)カラー・イメージャを含む単眼カメラ・プラットフォームなどの様々なカメラを前面構成で使用することができる。別の実例は、周辺から視界に入ってくる物体(例えば、歩行者、横断する交通、又は自転車)を知覚するために使用され得るワイドビュー・カメラ1270であり得る。図13には1つのワイドビュー・カメラしか示されていないが、車両1200には任意の数のワイドビュー・カメラ1270があってもよい。また、長距離カメラ1298(例えば、ロング・ビュー・ステレオ・カメラ・ペア)を、特にニューラル・ネットワークがまだトレーニングされていない物体について、奥行きベースの物体検出に使用することができる。長距離カメラ1298はまた、物体の検出及び分類だけでなく、基本的な物体の追跡にも使用することができる。 A variety of cameras can be used in a front-facing configuration, such as a monocular camera platform including a complementary metal oxide semiconductor (CMOS) color imager. Another example can be a wide-view camera 1270 that can be used to perceive objects (e.g., pedestrians, crossing traffic, or bicycles) coming into view from the periphery. Although only one wide-view camera is shown in FIG. 13, there can be any number of wide-view cameras 1270 in the vehicle 1200. Also, a long-range camera 1298 (e.g., a long-view stereo camera pair) can be used for depth-based object detection, especially for objects for which the neural network has not yet been trained. The long-range camera 1298 can also be used for basic object tracking, as well as object detection and classification.
1つ又は複数のステレオ・カメラ1268を前面構成に含めることもできる。ステレオ・カメラ1268には、プログラマブル論理(例えば、FPGA)及びCAN又はイーサネット(登録商標)・インターフェースが統合されているマルチコア・マイクロプロセッサを単一のチップに提供し得るスケーラブルな処理ユニットを含む統合された制御ユニットが含まれている場合がある。このようなユニットを使用して、車両の環境の3Dマップを生成することができる。これには、画像内のすべての点の距離推定値が含まれる。別のステレオ・カメラ1268には、2つのカメラ・レンズ(左右に1つずつ)と、車両からターゲット物体までの距離を測定し、生成された情報(例えば、メタデータ)を使用して自律緊急ブレーキ及び車線逸脱警報機能を作動させ得る画像処理チップとを含み得るコンパクト・ステレオ・ビジョン・センサが含まれていてもよい。他のタイプのステレオ・カメラ1268を、本明細書に説明されているものに加えて、又はその代わりに使用することができる。 One or more stereo cameras 1268 may also be included in the front configuration. The stereo camera 1268 may include an integrated control unit including a scalable processing unit that may provide a multi-core microprocessor with integrated programmable logic (e.g., FPGA) and CAN or Ethernet interfaces in a single chip. Such a unit may be used to generate a 3D map of the vehicle's environment, including distance estimates for all points in the image. Another stereo camera 1268 may include a compact stereo vision sensor that may include two camera lenses (one on the left and one on the right) and an image processing chip that may measure the distance from the vehicle to target objects and use the generated information (e.g., metadata) to activate autonomous emergency braking and lane departure warning functions. Other types of stereo cameras 1268 may be used in addition to or instead of those described herein.
車両1200の横の環境の部分を含む視野を有するカメラ(例えば、サイドビュー・カメラ)をサラウンド・ビューに使用して、占有グリッドを作成及び更新するだけでなく、側面衝撃衝突警報を生成するために使用される情報を提供することができる。例えば、サラウンド・カメラ1274(例えば、図13に示す4つのサラウンド・カメラ1274)を車両1200の周囲に配置することができる。サラウンド・カメラ1274には、ワイドビュー・カメラ1270、魚眼カメラ、360度カメラなどが含まれ得る。例えば、4つの魚眼カメラを車両の前部、後部、及び側部に配置することができる。別の配置では、車両は3つのサラウンド・カメラ1274(例えば、左、右、及び後部)を使用し、1つ又は複数の他のカメラ(例えば、前向きのカメラ)を4つ目のサラウンド・ビュー・カメラとして利用することができる。 Cameras having a field of view that includes portions of the environment beside the vehicle 1200 (e.g., side-view cameras) can be used for surround view to provide information used to create and update the occupancy grid as well as generate side impact collision warnings. For example, surround cameras 1274 (e.g., four surround cameras 1274 shown in FIG. 13) can be positioned around the vehicle 1200. The surround cameras 1274 can include wide-view cameras 1270, fish-eye cameras, 360-degree cameras, and the like. For example, four fish-eye cameras can be positioned at the front, rear, and sides of the vehicle. In another arrangement, the vehicle can use three surround cameras 1274 (e.g., left, right, and rear) and utilize one or more other cameras (e.g., a forward-facing camera) as a fourth surround view camera.
車両1200の後方の環境の部分を含む視界を有するカメラ(例えば、リヤビュー・カメラ)を、駐車支援、サラウンド・ビュー、後部衝突警報、並びに占有グリッドの作成及び更新に使用することができる。本明細書で説明するように、前面カメラとしても適しているカメラ(例えば、長距離及び/又は中距離カメラ1298、ステレオ・カメラ1268、赤外線カメラ1272など)を含むが、これらに限定されない様々なカメラを使用することができる。 A camera having a field of view that includes a portion of the environment behind the vehicle 1200 (e.g., a rearview camera) can be used for parking assistance, surround view, rear collision warning, and creating and updating an occupancy grid. As described herein, a variety of cameras can be used, including, but not limited to, cameras that are also suitable as front cameras (e.g., long-range and/or mid-range camera 1298, stereo camera 1268, infrared camera 1272, etc.).
図14は、本開示のいくつかの実施例による、図12の自律車両の例1200のシステム・アーキテクチャの例のブロック図である。本明細書で説明されるこの配置及び他の配置は、実例としてのみ記載されていることを理解すべきである。他の配置及び要素(例えば、マシン、インターフェース、機能、順序、機能のグループ分けなど)を、示されているものに加えて又は代わりに使用することができ、また、いくつかの要素を完全に省略することもできる。さらに、本明細書で説明される要素のうちの多くは、個別の若しくは分散されたコンポーネントとして、又は他のコンポーネントと併せて、並びに任意の適切な組み合わせ及び場所で実装され得る機能的エンティティである。本明細書においてエンティティによって実行されていると説明される様々な機能は、ハードウェア、ファームウェア、及び/又はソフトウェアによって実行され得る。例えば、メモリに記憶された命令を実行するプロセッサによって、様々な機能が実行され得る。 14 is a block diagram of an example system architecture of the example autonomous vehicle 1200 of FIG. 12, according to some embodiments of the present disclosure. It should be understood that this and other arrangements described herein are provided by way of example only. Other arrangements and elements (e.g., machines, interfaces, functions, sequences, groupings of functions, etc.) can be used in addition to or instead of those shown, and some elements can be omitted entirely. Furthermore, many of the elements described herein are functional entities that can be implemented as separate or distributed components, or in conjunction with other components, and in any suitable combination and location. Various functions described herein as being performed by entities can be performed by hardware, firmware, and/or software. For example, various functions can be performed by a processor executing instructions stored in a memory.
図14の車両1200のコンポーネント、特徴、及びシステムの各々は、バス1202を介して接続されているものとして示されている。バス1202には、コントローラ・エリア・ネットワーク(CAN)データ・インターフェース(或いは、本明細書では「CANバス」とも呼ぶ)が含まれ得る。CANは、車両1200内のネットワークであり、ブレーキの作動、加速、制動、ステアリング、フロントガラスのワイパなど、車両1200の様々な特徴及び機能の制御に役立つように使用され得る。CANバスは、数十又は数百のノードを有するように構成され得る。各々、それ自体の固有の識別子(例えば、CAN ID)を有している。CANバスは、ハンドルの角度、対地速度、エンジンの毎分回転数(RPM:Revolutions Per Minute)、ボタン位置、及び/又は他の車両ステータス・インジケータを見つけるために読み取ることができる。CANバスはASIL Bに準拠している場合がある。 Each of the components, features, and systems of the vehicle 1200 of FIG. 14 are shown connected via a bus 1202. The bus 1202 may include a Controller Area Network (CAN) data interface (alternatively referred to herein as a "CAN bus"). The CAN is a network within the vehicle 1200 that may be used to help control various features and functions of the vehicle 1200, such as brake application, acceleration, braking, steering, windshield wipers, etc. The CAN bus may be configured to have tens or hundreds of nodes, each with its own unique identifier (e.g., CAN ID). The CAN bus may be read to find steering wheel angle, ground speed, engine Revolutions Per Minute (RPM), button positions, and/or other vehicle status indicators. The CAN bus may be ASIL B compliant.
本明細書では、バス1202はCANバスであるものとして説明されているが、これは限定を意図したものではない。例えば、CANバスに加えて又はその代わりに、FlexRay及び/又はイーサネット(登録商標)を使用することができる。加えて、バス1202を表すために1つの線が使用されているが、これは、限定を意図したものではない。例えば、1つ又は複数のCANバス、1つ又は複数のFlexRayバス、1つ又は複数のイーサネット(登録商標)・バス、及び/又は異なるプロトコルを使用する1つ又は複数の他のタイプのバスを含み得る、任意の数のバス1202があってもよい。いくつかの実例では、2つ以上のバス1202を使用して異なる機能を実行するか、及び/又は冗長性のために使用することができる。例えば、第1のバス1202を衝突回避機能に使用し、第2のバス1202を作動制御に使用することができる。いずれの実例でも、各バス1202は車両1200のどのコンポーネントとも通信することができ、2つ以上のバス1202が同じコンポーネントと通信することもできる。いくつかの実例では、各SoC1204、各コントローラ1236、及び/又は車両内の各コンピュータは、同じ入力データ(例えば、車両1200のセンサからの入力)にアクセスすることができ、また、CANバスなどの共通バスに接続され得る。 Although the bus 1202 is described herein as being a CAN bus, this is not intended to be limiting. For example, FlexRay and/or Ethernet can be used in addition to or instead of a CAN bus. Additionally, a single line is used to represent the bus 1202, but this is not intended to be limiting. There may be any number of buses 1202, which may include, for example, one or more CAN buses, one or more FlexRay buses, one or more Ethernet buses, and/or one or more other types of buses using different protocols. In some instances, two or more buses 1202 may be used to perform different functions and/or for redundancy. For example, a first bus 1202 may be used for collision avoidance functions and a second bus 1202 may be used for actuation control. In any instance, each bus 1202 may communicate with any component of the vehicle 1200, and two or more buses 1202 may communicate with the same component. In some examples, each SoC 1204, each controller 1236, and/or each computer in the vehicle may have access to the same input data (e.g., input from sensors in the vehicle 1200) and may be connected to a common bus, such as a CAN bus.
車両1200には、図12に関して本明細書に説明されているように、1つ又は複数のコントローラ1236が含まれ得る。コントローラ1236は、様々な機能に使用され得る。コントローラ1236は、車両1200の他の様々なコンポーネント及びシステムのいずれにも結合することができ、車両1200の制御、車両1200の人工知能、車両1200のインフォテインメントなどに使用され得る。 Vehicle 1200 may include one or more controllers 1236, as described herein with respect to FIG. 12. Controller 1236 may be used for a variety of functions. Controller 1236 may be coupled to any of a variety of other components and systems of vehicle 1200 and may be used for control of vehicle 1200, artificial intelligence of vehicle 1200, infotainment of vehicle 1200, etc.
車両1200には、システム・オン・チップ(SoC)1204が含まれ得る。SoC1204には、CPU1206、GPU1208、プロセッサ1210、キャッシュ1212、アクセラレータ1214、データ・ストア1216、及び/又は図示されていない他のコンポーネント及び特徴が含まれ得る。SoC1204は、様々なプラットフォーム及びシステムで車両1200を制御するために使用することができる。例えば、SoC1204は、1つ又は複数のサーバ(例えば、図15のサーバ1278)からネットワーク・インターフェース1224を介してマップ・リフレッシュ及び/又は更新を取得し得るHDマップ1222を有するシステム(例えば、車両1200のシステム)において組み合わせることができる。 The vehicle 1200 may include a system on chip (SoC) 1204. The SoC 1204 may include a CPU 1206, a GPU 1208, a processor 1210, a cache 1212, an accelerator 1214, a data store 1216, and/or other components and features not shown. The SoC 1204 may be used to control the vehicle 1200 in a variety of platforms and systems. For example, the SoC 1204 may be combined in a system (e.g., the system of the vehicle 1200) with an HD map 1222 that may obtain map refreshes and/or updates via a network interface 1224 from one or more servers (e.g., server 1278 of FIG. 15).
CPU1206には、CPUクラスタ又はCPUコンプレックス(或いは、本明細書では、「CCPLEX」とも呼ぶ)が含まれ得る。CPU1206には、複数のコア及び/又はL2キャッシュが含まれ得る。例えば、いくつかの実施例では、CPU1206には、コヒーレントなマルチプロセッサ構成で8つのコアが含まれていてもよい。いくつかの実施例では、CPU1206には、4つのデュアルコア・クラスタが含まれていてもよく、各クラスタに専用のL2キャッシュ(例えば、2MBのL2キャッシュ)がある。CPU1206(例えば、CCPLEX)は、CPU1206のクラスタの任意の組み合わせを任意の所与の時間にアクティブにできるように、同時クラスタ操作をサポートするように構成され得る。 CPU 1206 may include a CPU cluster or CPU complex (also referred to herein as a "CCPLEX"). CPU 1206 may include multiple cores and/or L2 caches. For example, in some embodiments, CPU 1206 may include eight cores in a coherent multiprocessor configuration. In some embodiments, CPU 1206 may include four dual-core clusters, each with its own dedicated L2 cache (e.g., 2 MB L2 cache). CPU 1206 (e.g., a CCPLEX) may be configured to support concurrent cluster operations such that any combination of CPU 1206 clusters may be active at any given time.
CPU1206には、次の特徴のうちの1つ又は複数を含む電力管理機能を実装することができる:個々のハードウェア・ブロックは、動的電力を節約するために、アイドル時に自動的にクロックゲートされ得る、各コア・クロックは、WFI/WFE命令の実行によりコアがアクティブに命令を実行していない場合、ゲートされ得る、各コアは独立してパワーゲートされ得る、各コア・クラスタは、すべてのコアがクロックゲート又はパワーゲートされている場合、独立してクロックゲートされ得る、及び/又は各コア・クラスタは、すべてのコアがパワーゲートされている場合、独立してパワーゲートされ得る。CPU1206はさらに、電力状態を管理するための拡張アルゴリズムを実装することができる。この場合、許可される電力状態と予想されるウェイクアップ時間が指定され、ハードウェア/マイクロコードがコア、クラスタ、及びCCPLEXの入るべき最適な電力状態を判断する。処理コアは、作業をマイクロコードにオフロードして、ソフトウェアでの簡素化された電力状態エントリ・シーケンスをサポートすることができる。 CPU 1206 may implement power management capabilities including one or more of the following features: individual hardware blocks may be automatically clock gated when idle to conserve dynamic power; each core clock may be gated when the core is not actively executing instructions by executing WFI/WFE instructions; each core may be independently power gated; each core cluster may be independently clock gated when all cores are clock gated or power gated; and/or each core cluster may be independently power gated when all cores are power gated. CPU 1206 may further implement an enhanced algorithm for managing power states, where allowed power states and expected wake-up times are specified and hardware/microcode determines the optimal power state to enter for the cores, clusters, and CCPLEX. Processing cores may offload work to microcode to support a simplified power state entry sequence in software.
GPU1208には、統合GPU(或いは、本明細書では「iGPU」とも呼ぶ)が含まれ得る。GPU1208は、プログラム可能であり、並列ワークロードに効率的であり得る。いくつかの実例では、GPU1208は、拡張テンソル命令セットを使用する場合がある。GPU1208には、1つ又は複数のストリーミング・マイクロプロセッサが含まれ得る。各ストリーミング・マイクロプロセッサには、L1キャッシュ(例えば、少なくとも96KBのストレージ容量を有するL1キャッシュ)が含まれている場合があり、また、ストリーミング・マイクロプロセッサのうちの2つ以上がL2キャッシュ(例えば、512KBのストレージ容量を有するL2キャッシュ)を共有する場合がある。いくつかの実施例では、GPU1208には、少なくとも8つのストリーミング・マイクロプロセッサが含まれ得る。GPU1208は、コンピュータベースのアプリケーション・プログラミング・インターフェース(API:Application Programming Interface)を使用することができる。また、GPU1208は、1つ又は複数の並列コンピューティング・プラットフォーム及び/又はプログラミング・モデル(例えば、NVIDIAのCUDA)を使用することができる。 The GPU 1208 may include an integrated GPU (alternatively referred to herein as an "iGPU"). The GPU 1208 may be programmable and efficient for parallel workloads. In some instances, the GPU 1208 may use an extended tensor instruction set. The GPU 1208 may include one or more streaming microprocessors. Each streaming microprocessor may include an L1 cache (e.g., an L1 cache having at least 96 KB of storage capacity) and two or more of the streaming microprocessors may share an L2 cache (e.g., an L2 cache having 512 KB of storage capacity). In some embodiments, the GPU 1208 may include at least eight streaming microprocessors. The GPU 1208 may use a computer-based Application Programming Interface (API). Additionally, GPU 1208 may use one or more parallel computing platforms and/or programming models (e.g., NVIDIA's CUDA).
GPU1208は、自動車及び組み込み使用事例での最高のパフォーマンスのために電力最適化され得る。例えば、GPU1208は、フィン電界効果トランジスタ(FinFET:Fin Field-Effect Transistor)上で製作され得る。しかしながら、これは、限定を意図したものではなく、GPU1208は他の半導体製造プロセスを使用して製作することができる。各ストリーミング・マイクロプロセッサには、複数のブロックに区分化された多数の混合精度処理コアを組み込むことができる。例えば、また、限定されることなく、64個のPF32コアと32個のPF64コアを4つの処理ブロックに区分化することができる。このような実例では、各処理ブロックには、16個のFP32コア、8個のFP64コア、16個のINT32コア、深層学習行列演算のための2つの混合精度NVIDIAテンソル・コア、L0命令キャッシュ、ワープ・スケジューラ、ディスパッチ・ユニット、及び/又は64KBのレジスタ・ファイルが割り当てられ得る。また、ストリーミング・マイクロプロセッサには、計算及びアドレス指定計算の混合を有するワークロードの効率的な実行を提供するための独立した並行の整数及び浮動小数点データ経路が含まれている場合がある。ストリーミング・マイクロプロセッサには、並列スレッド間のより細かい細粒度の同期及び連携を可能にするために、独立したスレッド・スケジューリング能力が含まれている場合がある。ストリーミング・マイクロプロセッサには、プログラミングを単純化しながらパフォーマンスを向上させるために、組み合わされたL1データ・キャッシュ及び共有メモリ・ユニットが含まれ得る。 GPU 1208 may be power optimized for best performance in automotive and embedded use cases. For example, GPU 1208 may be fabricated on Fin Field-Effect Transistors (FinFETs). However, this is not intended to be limiting and GPU 1208 may be fabricated using other semiconductor manufacturing processes. Each streaming microprocessor may incorporate multiple 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 be assigned 16 FP32 cores, 8 FP64 cores, 16 INT32 cores, two mixed-precision NVIDIA tensor cores for deep learning matrix operations, an L0 instruction cache, a warp scheduler, a dispatch unit, and/or a 64 KB register file. Streaming microprocessors may also include independent parallel integer and floating point data paths to provide efficient execution of workloads having a mix of computational and addressing computations. Streaming microprocessors may include independent thread scheduling capabilities to allow finer grained synchronization and coordination between parallel threads. Streaming microprocessors may include a combined L1 data cache and shared memory unit to improve performance while simplifying programming.
GPU1208には、いくつかの実例では、約900GB/秒のピーク・メモリ帯域幅を提供するために、高帯域幅メモリ(HBM:High Bandwidth Memory)及び/又は16GB HBM2メモリ・サブシステムが含まれ得る。いくつかの実例では、HBMメモリに加えて又はその代わりに、グラフィックス・ダブル・データ・レート・タイプ5同期ランダム・アクセス・メモリ(GDDR5:Graphics Double Data Rate Type Five Synchronous Random-Access Memory)などの同期グラフィックス・ランダム・アクセス・メモリ(SGRAM:Synchronous Graphics Random-Access Memory)を使用することができる。 The GPU 1208 may include a High Bandwidth Memory (HBM) and/or a 16 GB HBM2 memory subsystem to provide a peak memory bandwidth of approximately 900 GB/sec in some instances. In some instances, a Synchronous Graphics Random-Access Memory (SGRAM), such as Graphics Double Data Rate Type Five Synchronous Random-Access Memory (GDDR5), may be used in addition to or instead of the HBM memory.
GPU1208には、アクセス・カウンタを含む統一されたメモリ技術が含まれて、メモリ・ページに最も頻繁にアクセスするプロセッサへのそれらのメモリ・ページのより正確な移動が可能にされ、これにより、プロセッサ間で共有される記憶範囲の効率を向上させることができる。いくつかの実例では、アドレス変換サービス(ATS:Address Translation Service)サポートを使用して、GPU1208がCPU1206のページ・テーブルに直接アクセスできるようにすることができる。このような実例では、GPU1208のメモリ管理ユニット(MMU:Memory Management Unit)がミスを経験すると、アドレス変換要求がCPU1206に送信され得る。これに対応して、CPU1206は、アドレスの仮想対物理マッピングのためのそのページ・テーブルを調べることができ、変換をGPU1208に送り返す。したがって、統一されたメモリ技術は、CPU1206とGPU1208の両方のメモリに単一の統一された仮想アドレス空間を可能にすることができ、これにより、GPU1208のプログラミングとアプリケーションのGPU1208へのポーティングが単純化される。 The GPU 1208 includes unified memory technology, including access counters, to enable more accurate movement of memory pages to the processors that access them most frequently, thereby improving the efficiency of storage ranges shared between processors. In some instances, Address Translation Service (ATS) support can be used to allow the GPU 1208 to directly access the CPU 1206's page tables. In such instances, when the GPU 1208's Memory Management Unit (MMU) experiences a miss, an address translation request can be sent to the CPU 1206. In response, the CPU 1206 can consult its page table for the virtual-to-physical mapping of the address and send the translation back to the GPU 1208. Thus, the unified memory technology can enable a single unified virtual address space for both CPU 1206 and GPU 1208 memory, which simplifies programming of the GPU 1208 and porting of applications to the GPU 1208.
また、GPU1208には、GPU1208が他のプロセッサのメモリにアクセスする頻度を記録できるアクセス・カウンタが含まれ得る。アクセス・カウンタは、ページに最も頻繁にアクセスするプロセッサの物理メモリにメモリ・ページが移動することを確実にするのに役立ち得る。 GPU 1208 may also include access counters that can record how frequently GPU 1208 accesses the memory of other processors. The access counters can help ensure that memory pages are moved to the physical memory of the processors that access the pages most frequently.
SoC1204には、本明細書に説明されているものを含めて任意の数のキャッシュ1212が含まれ得る。例えば、キャッシュ1212には、CPU1206とGPU1208の両方に利用可能であるL3キャッシュ(例えば、CPU1206とGPU1208の両方に接続されている)が含まれ得る。キャッシュ1212には、キャッシュ・コヒーレンス・プロトコル(例えば、MEI、MESI、MSIなど)を使用するなどして、線の状態を記録できるライトバック・キャッシュが含まれ得る。実施例に応じて、L3キャッシュは4MB以上が含まれ得るが、より小さいキャッシュ・サイズを使用してもよい。 The SoC 1204 may include any number of caches 1212, including those described herein. For example, the caches 1212 may include an L3 cache that is available to both the CPU 1206 and the GPU 1208 (e.g., connected to both the CPU 1206 and the GPU 1208). The caches 1212 may include a write-back cache that can record line state, such as using a cache coherence protocol (e.g., MEI, MESI, MSI, etc.). Depending on the embodiment, the L3 cache may include 4 MB or more, although smaller cache sizes may be used.
SoC1204には、DNNの処理など、車両1200の様々なタスク又は操作のいずれかに関して処理を実行する際に活用できる算術論理演算ユニット(ALU:Arithmetic Logic Unit)が含まれ得る。また、SoC1204には、システム内で数学操作を実行するための浮動小数点演算ユニット(FPU:Floating Point Unit)、又は他の数学コプロセッサ若しくは数値演算コプロセッサ・タイプが含まれていてもよい。例えば、SoC104には、CPU1206及び/又はGPU1208内の実行ユニットとして統合された1つ又は複数のFPUが含まれていてもよい。 SoC1204 may include an Arithmetic Logic Unit (ALU) that may be utilized in performing processing for any of the various tasks or operations of vehicle 1200, such as processing the DNN. SoC1204 may also include a Floating Point Unit (FPU) or other math or numeric co-processor type for performing mathematical operations within the system. For example, SoC1204 may include one or more FPUs integrated as execution units within CPU1206 and/or GPU1208.
SoC1204には、1つ又は複数のアクセラレータ1214(例えば、ハードウェア・アクセラレータ、ソフトウェア・アクセラレータ、又はこれらの組み合わせ)が含まれ得る。例えば、SoC1204には、最適化されたハードウェア・アクセラレータ及び/又は大きなオンチップ・メモリが含まれ得るハードウェア・アクセラレーション・クラスタが含まれ得る。大きなオンチップ・メモリ(例えば、SRAMの4MB)は、ハードウェア・アクセラレーション・クラスタがニューラル・ネットワーク及び他の計算を高速化することを可能にし得る。ハードウェア・アクセラレーション・クラスタを使用して、GPU1208を補完し、且つGPU1208のタスクの一部を(例えば、他のタスクを実行するためにGPU1208のより多くのサイクルを解放するために)オフロードすることができる。一実例として、アクセラレータ1214は、加速に適しているように十分に安定している対象のワークロード(例えば、知覚、畳み込みニューラル・ネットワーク(CNN:Convolutional Neural Network)など)に使用され得る。「CNN」という用語には、本明細書で使用される場合、領域ベースの又は領域畳み込みニューラル・ネットワーク(RCNN:Regional Convolutional Neural Network)及び(例えば、オブジェクト検出に使用されるような)高速RCNNを含む、あらゆるタイプのCNNが含まれ得る。 SoC1204 may include one or more accelerators 1214 (e.g., hardware accelerators, software accelerators, or a combination thereof). For example, SoC1204 may include a hardware acceleration cluster, which may include optimized hardware accelerators and/or large on-chip memory. The large on-chip memory (e.g., 4MB of SRAM) may enable the hardware acceleration cluster to speed up neural network and other calculations. The hardware acceleration cluster may be used to complement GPU1208 and offload some of the tasks of GPU1208 (e.g., to free up more cycles of GPU1208 to perform other tasks). As an example, the accelerator 1214 may be used for target workloads that are sufficiently stable to be suitable for acceleration (e.g., perception, Convolutional Neural Networks (CNNs), etc.). The term "CNN" as used herein may include any type of CNN, including region-based or regional convolutional neural networks (RCNNs) and fast RCNNs (e.g., as used for object detection).
アクセラレータ1214(例えば、ハードウェア・アクセラレーション・クラスタ)には、深層学習アクセラレータ(DLA:Deep Learning Accelerator)が含まれ得る。DLAには、深層学習アプリケーション及び推論のために1秒当たり追加の10兆回の操作を提供するように構成され得る1つ又は複数のテンソル処理ユニット(TPU:Tensor Processing Unit)が含まれ得る。TPUは、(例えば、CNN、RCNNなどの)画像処理機能を実行するように構成され、且つそのために最適化されたアクセラレータであり得る。DLAはさらに、特定のセットのニューラル・ネットワーク・タイプ及び浮動小数点演算、並びに推論のために最適化され得る。DLAの設計は、汎用GPUよりも多くのパフォーマンスを1ミリメートル当たりに提供することができ、CPUのパフォーマンスを大きく超える。TPUは、例えば、特徴と重みの両方についてINT8、INT16、及びFP16データ・タイプをサポートするなどの単一インスタンス畳み込み機能、並びにポストプロセッサ機能を含む、いくつかの機能を実行することができる。 The accelerator 1214 (e.g., a hardware acceleration cluster) may include a deep learning accelerator (DLA). The DLA may include one or more tensor processing units (TPUs) that may be configured to provide an additional 10 trillion operations per second for deep learning applications and inference. The TPU may be an accelerator configured and optimized to perform image processing functions (e.g., CNN, RCNN, etc.). The DLA may further be optimized for a specific set of neural network types and floating-point operations, as well as inference. The design of the DLA may provide more performance per millimeter than a general-purpose GPU, greatly exceeding the performance of a CPU. The TPU can perform several functions, including single-instance convolution functions, such as supporting INT8, INT16, and FP16 data types for both features and weights, as well as post-processor functions.
DLAは、様々な機能のうちのいずれかの処理済みデータ又は未処理データに、ニューラル・ネットワーク、特にCNNを迅速且つ効率的に実行することができる。CNNには、例えば、カメラ・センサからのデータを使用する物体識別及び検出のためのCNN、カメラ・センサからのデータを使用する距離推定のためのCNN、マイクからのデータを使用する緊急車両検出及び識別及び検出のためのCNN、カメラ・センサからのデータを使用する顔認識及び車両所有者識別のためのCNN、並びに/又はセキュリティ及び/若しくは安全関連イベントのためのCNNを含むが、これらに限定されない。 The DLA can quickly and efficiently perform neural networks, particularly CNNs, on the processed or unprocessed data for any of a variety of functions, including, but not limited to, CNNs for object identification and detection using data from camera sensors, CNNs for distance estimation using data from camera sensors, CNNs for emergency vehicle detection and identification using data from microphones, CNNs for face recognition and vehicle owner identification using data from camera sensors, and/or CNNs for security and/or safety related events.
DLAは、GPU1208の任意の機能を実行することができ、また、推論アクセラレータを使用することによって、例えば、設計者は、任意の機能のためにDLA又はGPU1208のいずれかを対象にすることができる。例えば、設計者は、CNNの処理と浮動小数点演算をDLAに集中させ、他の機能をGPU1208及び/又は他のアクセラレータ1214に委任することができる。 The DLA can perform any function of the GPU 1208, and by using an inference accelerator, for example, a designer can target either the DLA or the GPU 1208 for any function. For example, a designer can centralize CNN processing and floating point operations in the DLA and delegate other functions to the GPU 1208 and/or other accelerators 1214.
アクセラレータ1214(例えば、ハードウェア・アクセラレーション・クラスタ)には、プログラマブル・ビジョン・アクセラレータ(PVA:Programmable Vision Accelerator)が含まれ得る。これは、或いは、本明細書では、コンピュータ・ビジョン・アクセラレータと呼ばれることもある。PVAは、高度運転者支援システム(ADAS)、自律運転、並びに/又は拡張現実(AR:Augumented Reality)及び/若しくは仮想現実(VR:Virtual Reality)アプリケーション用のコンピュータ・ビジョン・アルゴリズムを加速するように設計及び構成され得る。PVAは、パフォーマンスと柔軟性とのバランスをもたらすことができる。例えば、各PVAには、例えば、また、限定されることなく、任意の数の縮小命令セット・コンピュータ(RISC:Reduced Instruction Set Computer)コア、ダイレクト・メモリ・アクセス(DMA)、及び/又は任意の数のベクトル・プロセッサが含まれ得る。 The accelerator 1214 (e.g., a hardware acceleration cluster) may include a Programmable Vision Accelerator (PVA), which may alternatively be referred to herein as a computer vision accelerator. The PVA may be designed and configured to accelerate computer vision algorithms for Advanced Driver Assistance Systems (ADAS), autonomous driving, and/or Augmented Reality (AR) and/or Virtual Reality (VR) applications. The PVA may provide a balance of performance and flexibility. For example, each PVA may include, for example and without limitation, any number of Reduced Instruction Set Computer (RISC) cores, Direct Memory Access (DMA), and/or any number of vector processors.
RISCコアは、画像センサ(例えば、本明細書に説明されているいずれかのカメラの画像センサ)、画像信号プロセッサなどと対話し得る。RISCコアの各々には、任意の量のメモリが含まれ得る。RISCコアは、実施例に応じて、いくつかのプロトコルのうちのいずれかを使用することができる。いくつかの実例では、RISCコアは、リアルタイム・オペレーティング・システム(RTOS:Real-Time Operating System)を実行することができる。RISCコアは、1つ又は複数の集積回路デバイス、特定用途向け集積回路(ASIC:Application Specific Integrated Circuit)、及び/又はメモリ・デバイスを使用して実装され得る。例えば、RISCコアには命令キャッシュ及び/又は密結合RAMが含まれ得る。 The RISC cores may interact with an image sensor (e.g., an image sensor of any of the cameras described herein), an image signal processor, etc. 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 instances, 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.
DMAは、PVAのコンポーネントが、CPU1206とは無関係に、システム・メモリにアクセスすることを可能にし得る。DMAは、多次元アドレス指定及び/又は循環アドレス指定をサポートすることを含むが、これに限定されない、PVAに最適化を提供するために使用される任意の数の特徴をサポートすることができる。いくつかの実例では、DMAは、最大6以上の次元(これには、ブロック幅、ブロック高さ、ブロック深さ、水平ブロック・ステッピング、垂直ブロック・ステッピング、及び/又は深さステッピングが含まれ得る)のアドレス指定をサポートすることができる。 The DMA may enable components of the PVA to access system memory independent of the CPU 1206. The DMA may support any number of features used to provide optimizations to the PVA, including, but not limited to, supporting multi-dimensional addressing and/or circular addressing. In some instances, the DMA may support addressing in up to six or more dimensions (which may include block width, block height, block depth, horizontal block stepping, vertical block stepping, and/or depth stepping).
ベクトル・プロセッサは、コンピュータ・ビジョン・アルゴリズムのプログラミングを効率的且つ柔軟に実行し、信号処理能力を提供するように設計され得るプログラム可能なプロセッサであり得る。いくつかの実例では、PVAには、PVAコアと2つのベクトル処理サブシステム・パーティションとが含まれている場合がある。PVAコアには、プロセッサ・サブシステム、DMAエンジン(例えば、2つのDMAエンジン)、及び/又は他の周辺機器が含まれていてもよい。ベクトル処理サブシステムは、PVAのプライマリ処理エンジンとして動作し、ベクトル処理ユニット(VPU:Vector Processing Unit)、命令キャッシュ、及び/又はベクトル・メモリ(例えば、VMEM)が含まれ得る。VPUコアには、単一命令複数データ(SIMD:Single Instruction,Multiple Data)、超長命令語(VLIW:Very Long Instruction Word)デジタル信号プロセッサなどのデジタル信号プロセッサが含まれ得る。SIMDとVLIWとの組み合わせは、スループット及び速度を高めることができる。 A vector processor may be a programmable processor that may be designed to efficiently and flexibly execute computer vision algorithm programming and provide signal processing capabilities. In some instances, the PVA may include a PVA core and two vector processing subsystem partitions. The PVA core may include a processor subsystem, a DMA engine (e.g., two DMA engines), and/or other peripherals. The vector processing subsystem operates 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). The 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 can increase throughput and speed.
ベクトル・プロセッサの各々には、命令キャッシュが含まれ得、また、専用メモリに結合され得る。結果として、いくつかの実例では、ベクトル・プロセッサの各々は、他のベクトル・プロセッサとは無関係に実行するように構成され得る。他の実例では、特定のPVAに含まれるベクトル・プロセッサは、データ並列性を採用するように構成され得る。例えば、いくつかの実施例では、単一のPVAに含まれる複数のベクトル・プロセッサが、同じコンピュータ・ビジョン・アルゴリズムを、画像の異なる領域に実行することができる。他の実例では、特定のPVAに含まれるベクトル・プロセッサが、同じ画像に異なるコンピュータ・ビジョン・アルゴリズムを同時に実行するか、又は一連の画像若しくは画像の部分に異なるアルゴリズムを実行することができる。特に、任意の数のPVAをハードウェア・アクセラレーション・クラスタに含めることができ、また、任意の数のベクトル・プロセッサをPVAの各々に含めることができる。また、PVAには、システム全体の安全性を高めるために、追加のエラー訂正コード(ECC)メモリが含まれていてもよい。 Each of the vector processors may include an instruction cache and may be coupled to dedicated memory. As a result, in some instances, each of the vector processors may be configured to execute independently of the other vector processors. In other instances, the vector processors included in a particular PVA may be configured to employ data parallelism. For example, in some embodiments, multiple vector processors included in a single PVA may execute the same computer vision algorithm on different regions of an image. In other instances, the vector processors included in a particular PVA may execute different computer vision algorithms simultaneously on the same image, or execute different algorithms on a series of images or portions of an image. In particular, any number of PVAs may be included in a hardware acceleration cluster, and any number of vector processors may be included in each of the PVAs. The PVAs may also include additional error correction code (ECC) memory to increase the overall system security.
アクセラレータ1214(例えば、ハードウェア・アクセラレーション・クラスタ)には、アクセラレータ1214に高帯域幅、低レイテンシSRAMを提供するためにコンピュータ・ビジョン・ネットワーク・オンチップ及びSRAMが含まれ得る。いくつかの実例では、オンチップ・メモリには、例えば、また、限定されることなく、PVAとDLAの両方からアクセス可能であり得る8つのフィールド構成可能なメモリ・ブロックから成る、少なくとも4MBのSRAMが含まれ得る。メモリ・ブロックの各ペアには、高度周辺バス(APB:Advanced Peripheral Bus)インターフェース、構成回路、コントローラ、及びマルチプレクサが含まれ得る。任意のタイプのメモリを使用できる。PVA及びDLAは、PVA及びDLAにメモリへの高速アクセスを提供するバックボーンを介してメモリにアクセスすることができる。バックボーンには、(例えば、APBを使用して)PVA及びDLAをメモリに相互接続するコンピュータ・ビジョン・ネットワーク・オンチップが含まれ得る。 The accelerator 1214 (e.g., a hardware acceleration cluster) may include a computer vision network on-chip and SRAM to provide the accelerator 1214 with high bandwidth, low latency SRAM. In some examples, the on-chip memory may include at least 4 MB of SRAM, consisting of, for example and without limitation, eight field configurable memory blocks that may be accessible from both the PVA and DLA. Each pair of memory blocks may include an Advanced Peripheral Bus (APB) interface, configuration circuitry, controllers, and multiplexers. Any type of memory may be used. The PVA and DLA may access the memory through a backbone that provides the PVA and DLA with high speed access to the memory. The backbone may include a computer vision network on-chip that interconnects the PVA and DLA to the memory (e.g., using the APB).
コンピュータ・ビジョン・ネットワーク・オンチップには、PVAとDLAの両方が作動可能信号及び有効信号を提供することを、任意の制御信号/アドレス/データを送信する前に判断するインターフェースが含まれ得る。このようなインターフェースは、制御信号/アドレス/データを送信するための別個のフェーズ及び個別のチャネル、並びに連続データ転送のためのバーストタイプ通信を提供することができる。このタイプのインターフェースは、ISO26262又はIEC61508規格に準拠していてよいが、他の規格及びプロトコルを使用することもできる。 The computer vision network-on-chip may include an interface that determines that both the PVA and DLA provide ready and valid signals before sending any control signals/address/data. Such an interface may provide separate phases and separate channels for transmitting control signals/address/data, as well as burst type communication for continuous data transfer. This type of interface may be compliant with ISO 26262 or IEC 61508 standards, although other standards and protocols may be used.
いくつかの実例では、SoC1204には、2018年8月10日に出願された特許文献1に記載されているようなリアルタイム・レイトレーシング・ハードウェア・アクセラレータが含まれ得る。リアルタイム・レイトレーシング・ハードウェア・アクセラレータは、RADAR信号解釈のための、音響伝播合成及び/又は分析のための、SONARシステムのシミュレーションのための、一般波伝播シミュレーションのための、ローカリゼーション及び/又は他の機能を目的とするLIDARデータに対する比較のための、並びに/或いは他の使用のための、リアルタイム視覚化シミュレーションを生成するために、(例えば、世界モデル内の)物体の位置及び規模を迅速且つ効率的に判断するために使用され得る。いくつかの実施例では、1つ又は複数のツリー・トラバーサル・ユニット(TTU:Tree Traversal Unit)を使用して、1つ又は複数のレイトレーシング関連の操作を実行することができる。 In some examples, the SoC1204 may include a real-time ray tracing hardware accelerator, such as that described in U.S. Patent Application Publication No. 2012/0133994, filed on Aug. 10, 2018. The real-time ray tracing hardware accelerator may be used to quickly and efficiently determine the location and scale of objects (e.g., in a world model) to generate real-time visualization simulations for RADAR signal interpretation, for acoustic propagation synthesis and/or analysis, for simulation of SONAR systems, for general wave propagation simulation, for comparison against LIDAR data for localization and/or other functions, and/or other uses. In some examples, one or more Tree Traversal Units (TTUs) may be used to perform one or more ray tracing related operations.
アクセラレータ1214(例えば、ハードウェア・アクセラレータ・クラスタ)には、自律運転のための幅広い用途がある。PVAは、ADAS及び自律車両の主要な処理段階に使用できるプログラム可能なビジョン・アクセラレータであり得る。PVAの能力は、低電力及び低レイテンシで、予測可能な処理を必要とするアルゴリズム・ドメインに適している。つまり、PVAは、低レイテンシ及び低電力とともに予測可能な実行時間を必要とする、小さなデータ・セット上でも、半高密度の又は高密度の通常の計算で良好に機能する。したがって、自律車両のプラットフォームとの関連で、PVAは、物体検出及び整数計算での操作において効率的であるので、クラシック・コンピュータ・ビジョン・アルゴリズムを実行するように設計されている。 The accelerator 1214 (e.g., a hardware accelerator cluster) has a wide range of applications for autonomous driving. The PVA can be a programmable vision accelerator that can be used for key processing stages in ADAS and autonomous vehicles. The capabilities of the PVA make it suitable for algorithm domains that require predictable processing with low power and low latency. That is, the PVA works well with semi-dense or dense regular computations even on small data sets that require predictable execution times with low latency and low power. Thus, in the context of an autonomous vehicle platform, the PVA is designed to run classic computer vision algorithms because it is efficient in object detection and operations with integer computations.
例えば、本技術の一実施例によれば、PVAはコンピュータ・ステレオ・ビジョンを実行するために使用される。いくつかの実例では、半グローバル・マッチングベースのアルゴリズムを使用できるが、これは、限定を意図したものではない。レベル3~5の自律運転のための多くの用途では、動き推定/ステレオ・マッチング(例えば、ストラクチャ・フロム・モーション、歩行者認識、車線検出など)がオンザフライで必要である。PVAは、2つの単眼カメラからの入力に対してコンピュータ・ステレオ・ビジョン機能を実行することができる。 For example, according to one embodiment of the present technology, the PVA is used to perform computer stereo vision. In some instances, a semi-global matching based algorithm can be used, but this is not intended to be limiting. Many applications for Level 3-5 autonomous driving require motion estimation/stereo matching (e.g., structure from motion, pedestrian recognition, lane detection, etc.) on the fly. The PVA can perform computer stereo vision functions on input from two monocular cameras.
いくつかの実例では、PVAを使用して高密度オプティカル・フローを実行することができる。例えば、PVAを使用して未加工のRADARデータを(例えば、4D高速フーリエ変換を使用して)処理して、次のRADARパルスを発する前に処理済みのRADAR信号を提供することができる。他の実例では、PVAは、例えば、未加工の飛行時間データを処理して処理済みの飛行時間データを提供することによって、飛行時間の深度処理に使用される。 In some instances, the PVA can be used to perform dense optical flow. For example, the PVA can be used to process raw RADAR data (e.g., using a 4D Fast Fourier Transform) to provide a processed RADAR signal before firing the next RADAR pulse. In other instances, the PVA is used for time-of-flight depth processing, for example, by processing raw time-of-flight data to provide processed time-of-flight data.
DLAを使用して、例えば、各物体検出の信頼の尺度を出力するニューラル・ネットワークを含む任意のタイプのネットワークを実行して、制御及び運転の安全性を高めることができる。このような信頼値は、確率として、又は他の検出と比較して各検出の相対的な「重み」を提供するものとして解釈され得る。この信頼値により、システムは、どの検出が、誤検出ではなく、真の検出と見なされるべきかに関するさらなる判断を行うことができる。例えば、システムは、信頼の閾値を設定し、閾値を超える検出のみを真の検出と見なすことができる。自動緊急ブレーキ(AEB:Automatic Emergency Braking)システムでは、誤検出は、車両に自動的に緊急ブレーキを実行させるが、これは明らかに望ましくない。したがって、最も信頼のある検知のみがAEBのトリガと見なされるべきである。DLAは、信頼値を回帰するためにニューラル・ネットワークを実行することができる。ニューラル・ネットワークは、境界ボックスの次元、(例えば、別のサブシステムから)取得したグラウンド・プレーンの推定値、ニューラル・ネットワーク及び/又は他のセンサ(例えば、LIDARセンサ1264又はRADARセンサ1260)から取得された車両1200の向き、距離、物体の3D位置の推定値と相関する慣性測定ユニット(IMU)センサ1266の出力などの少なくともいくつかのパラメータのサブセットを入力として取る。 The DLA can be used to run any type of network, including, for example, a neural network that outputs a measure of confidence for each object detection to improve control and driving safety. Such confidence values can be interpreted as a probability or as providing a relative "weight" of each detection compared to other detections. This confidence value allows the system to make further decisions regarding which detections should be considered true detections rather than false positives. For example, the system can set a confidence threshold and only consider detections above the threshold as true detections. In an Automatic Emergency Braking (AEB) system, a false positive would cause the vehicle to automatically perform emergency braking, which is clearly undesirable. Therefore, only the most confident detections should be considered to trigger the AEB. The DLA can run a neural network to regress the confidence value. The neural network takes as input at least a subset of parameters, such as the bounding box dimensions, an estimate of the ground plane obtained (e.g., from another subsystem), and the output of an inertial measurement unit (IMU) sensor 1266 that correlates with estimates of the vehicle 1200's orientation, distance, and 3D position of objects obtained from the neural network and/or other sensors (e.g., LIDAR sensor 1264 or RADAR sensor 1260).
SoC1204には、データ・ストア1216(例えば、メモリ)が含まれ得る。データ・ストア1216は、SoC1204のオンチップ・メモリであり得、GPU及び/又はDLAで実行されるニューラル・ネットワークを記憶することができる。いくつかの実例では、データ・ストア1216は、冗長性及び安全性のためにニューラル・ネットワークの複数のインスタンスを記憶するのに十分な大きさの容量を有し得る。データ・ストア1216には、L2又はL3キャッシュ1212が含まれ得る。データ・ストア1216への参照には、本明細書に説明されているPVA、DLA、及び/又は他のアクセラレータ1214に関連付けられたメモリへの参照が含まれ得る。 The SoC 1204 may include a data store 1216 (e.g., memory). The data store 1216 may be an on-chip memory of the SoC 1204 and may store the neural network executed on the GPU and/or DLA. In some instances, the data store 1216 may have a capacity large enough to store multiple instances of the neural network for redundancy and safety. The data store 1216 may include an L2 or L3 cache 1212. References to the data store 1216 may include references to memory associated with the PVA, DLA, and/or other accelerators 1214 described herein.
SoC1204には、1つ又は複数のプロセッサ1210(例えば、組み込みプロセッサなど)が含まれ得る。プロセッサ1210には、ブート電力及び管理機能及び関連のセキュリティ強化を処理するために、専用プロセッサであり得るブート及び電力管理プロセッサと、サブシステムとが含まれ得る。ブート及び電力管理プロセッサは、SoC1204のブート・シーケンスの一部であり得、実行時間電力管理サービスを提供し得る。ブート電力及び管理プロセッサは、クロック及び電圧のプログラミング、システムの低電力状態遷移における支援、SoC1204の熱及び温度センサの管理、及び/又はSoC1204の電力状態の管理を提供することができる。各温度センサは、その出力周波数が温度に比例するリング発振器として実装でき、SoC1204は、リング発振器を使用してCPU1206、GPU1208、及び/又はアクセラレータ1214の温度を検出することができる。温度が閾値を超えていると判定された場合、ブート及び電力管理プロセッサは、温度障害ルーチンに入り、SoC1204を低電力状態にするか、及び/又は車両1200を安全停止まで運転代行モード(chauffeur to safe-stop mode)にする(例えば、車両1200を安全停止させる)ことができる。 SoC1204 may include one or more processors 1210 (e.g., embedded processors, etc.). Processor 1210 may include a boot and power management processor, which may be a dedicated processor, and a subsystem to handle boot power and management functions and related security enhancements. The boot and power management processor may be part of the boot sequence of SoC1204 and may provide run-time power management services. The boot power and management processor may provide programming of clocks and voltages, assistance in transitioning the system to a low power state, management of thermal and temperature sensors of SoC1204, and/or management of the power state of SoC1204. Each temperature sensor may be implemented as a ring oscillator whose output frequency is proportional to temperature, and SoC1204 may use the ring oscillator to detect the temperature of CPU1206, GPU1208, and/or accelerator1214. If it is determined that the temperature exceeds a threshold, the boot and power management processor may enter a temperature fault routine, place the SoC 1204 in a low power state, and/or place the vehicle 1200 in chauffeur to safe-stop mode (e.g., bring the vehicle 1200 to a safe-stop).
プロセッサ1210にはさらに、オーディオ処理エンジンとして機能し得る組み込みプロセッサのセットが含まれ得る。オーディオ処理エンジンは、複数のインターフェースを介したマルチチャネル・オーディオの完全なハードウェア・サポートと、オーディオI/Oインターフェースの広く柔軟な範囲とを可能にするオーディオ・サブシステムであり得る。いくつかの実例では、オーディオ処理エンジンは、専用RAMを有するデジタル信号プロセッサを有する専用プロセッサ・コアである。 Processor 1210 may further include a set of embedded processors that may function as an audio processing engine. The audio processing engine may be an audio subsystem that allows full hardware support of multi-channel audio through multiple interfaces and a wide and flexible range of audio I/O interfaces. In some instances, the audio processing engine is a dedicated processor core with a digital signal processor with dedicated RAM.
プロセッサ1210にはさらに、低電力センサ管理及びウェイク使用事例をサポートするために必要なハードウェア特徴を提供できる常時オンのプロセッサ・エンジンが含まれ得る。常時オンのプロセッサ・エンジンには、プロセッサ・コア、密結合RAM、サポートする周辺機器(例えば、タイマ及び割り込みコントローラ)、様々なI/Oコントローラ周辺機器、及びルーティング論理が含まれ得る。 The processor 1210 may further include an always-on processor engine that can provide the necessary hardware features to support low power sensor management and wake 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 controller peripherals, and routing logic.
プロセッサ1210にはさらに、自動車アプリケーションの安全管理を処理する専用のプロセッサ・サブシステムを含む安全クラスタ・エンジンが含まれ得る。安全クラスタ・エンジンには、2つ以上のプロセッサ・コア、密結合RAM、サポートする周辺機器(例えば、タイマ、割り込みコントローラなど)、及び/又はルーティング論理が含まれ得る。安全モードでは、2つ以上のコアは、ロックステップ・モードで動作し、それらの動作間の差異を検出する比較論理を有する単一のコアとして機能し得る。 The processor 1210 may further include a safety cluster engine that includes a dedicated processor subsystem to handle safety management for automotive applications. The safety cluster engine may include two or more processor cores, tightly coupled RAM, supporting peripherals (e.g., timers, interrupt controllers, etc.), and/or routing logic. In a safety mode, the two or more cores may operate in lockstep mode and function as a single core with comparison logic to detect differences between their operations.
プロセッサ1210にはさらに、リアルタイム・カメラ管理を処理するための専用プロセッサ・サブシステムが含まれ得るリアルタイム・カメラ・エンジンが含まれ得る。 The processor 1210 may further include a real-time camera engine that may include a dedicated processor subsystem for handling real-time camera management.
プロセッサ1210にはさらに、カメラ処理パイプラインの一部であるハードウェア・エンジンである画像信号プロセッサが含まれ得るハイ・ダイナミック・レンジ信号プロセッサが含まれ得る。 The processor 1210 may further include a high dynamic range signal processor, which may include an image signal processor, which is a hardware engine that is part of the camera processing pipeline.
プロセッサ1210には、プレーヤ・ウインドウのための最終画像を生成するためにビデオ再生アプリケーションによって必要とされるビデオ後処理機能を実装する処理ブロック(例えば、マイクロプロセッサ上に実装される)であり得るビデオ画像合成器が含まれ得る。ビデオ映像合成器は、ワイドビュー・カメラ1270、サラウンド・カメラ1274、及び/又はキャビン内モニタリング・カメラ・センサにレンズ歪み補正を実行することができる。キャビン内モニタリング・カメラ・センサは、好ましくは、キャビン内イベントを識別し、それに応じて応答するように構成されている、高度なSoCの別のインスタンス上で実行するニューラル・ネットワークによってモニタリングされる。キャビン内システムは、読唇術を実行して、携帯電話サービスをアクティブにしたり、電話をかけたり、電子メールを口述して書き取らせたり、車両の目的地を変更したり、車両のインフォテインメント・システム及び設定をアクティブにしたり若しくは変更したり、又は音声でアクティブにされるウェブ・サーフィンを提供したりすることができる。特定の機能は、車両が自律モードで動作している場合にのみ運転者が利用することができ、それ以外の場合は無効にされる。 The processor 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 a final image for the player window. The video image compositor may perform lens distortion correction on the wide-view camera 1270, the surround camera 1274, and/or the in-cabin monitoring camera sensor. The in-cabin monitoring camera sensor is preferably monitored by a neural network running on another instance of an advanced SoC that is configured to identify in-cabin events and respond accordingly. The in-cabin system may perform lip reading to activate cellular service, make phone calls, dictate emails, change the vehicle's destination, activate or modify the vehicle's infotainment system and settings, or provide voice-activated web surfing. Certain features are available to the driver only when the vehicle is operating in autonomous mode and are disabled otherwise.
ビデオ画像合成器には、空間的ノイズ低減と時間的ノイズ低減の両方のために、強化された時間的ノイズ低減が含まれ得る。例えば、ビデオで動きが発生する場合、ノイズ低減は、空間的情報に適切に重み付けし、隣接するフレームから提供される情報の重みを減少させる。画像又は画像の一部分に動きが含まれていない場合、ビデオ画像合成器によって実行される時間的ノイズ低減は、前の画像からの情報を使用して、現在の画像内のノイズを低減することができる。 The video image combiner may include enhanced temporal noise reduction for both spatial and temporal noise reduction. For example, when motion occurs in the video, the noise reduction appropriately weights the spatial information and reduces the weight of information provided from adjacent frames. When an image or portion of an image does not contain motion, the temporal noise reduction performed by the video image combiner may use information from previous images to reduce noise in the current image.
ビデオ画像合成器はまた、入力ステレオ・レンズ・フレームでステレオ調整を実行するように構成され得る。ビデオ画像合成器はさらに、オペレーティング・システム・デスクトップが使用中であるときに、ユーザ・インターフェース合成に使用することができ、GPU1208は、新しい表面を連続的にレンダリングする必要はない。GPU1208の電源がオンで3Dレンダリングをアクティブに実行している場合でも、ビデオ画像合成器を使用してGPU1208をオフロードして、パフォーマンス及び応答性を向上させることができる。 The video image composer may also be configured to perform stereo adjustments on the input stereo lens frames. The video image composer may further be used for user interface composition when the operating system desktop is in use, and the GPU 1208 does not need to continually render new surfaces. Even when the GPU 1208 is powered on and actively performing 3D rendering, the video image composer may be used to offload the GPU 1208 for improved performance and responsiveness.
SoC1204にはさらに、カメラからのビデオ及び入力を受信するためのモバイル・インダストリ・プロセッサ・インターフェース(MIPI:Mobile Industry Processor Interface)カメラ・シリアル・インターフェース、高速インターフェース、並びに/又はカメラ及び関連ピクセル入力機能に使用できるビデオ入力ブロックが含まれ得る。SoC1204にはさらに、ソフトウェアによって制御され得、特定の役割にコミットされていないI/O信号を受信するために使用され得る入力/出力コントローラが含まれ得る。 SoC1204 may further include a Mobile Industry Processor Interface (MIPI) camera serial interface for receiving video and input from a camera, a high-speed interface, and/or a video input block that may be used for camera and related pixel input functions. SoC1204 may further include an input/output controller that may be controlled by software and used to receive I/O signals that are not committed to a specific role.
SoC1204にはさらに、周辺機器、オーディオ・コーデック、電力管理、及び/又は他のデバイスとの通信を可能にするために、幅広い周辺機器インターフェースが含まれ得る。SoC1204を使用して、(例えば、ギガビット・マルチメディア・シリアル・リンク及びイーサネット(登録商標)経由で接続されている)カメラからのデータ、センサ(例えば、イーサネット(登録商標)経由で接続され得るLIDARセンサ1264、RADARセンサ1260など)、バス1202からのデータ(例えば、車両1200の速度、ハンドルの位置など)、(例えば、イーサネット(登録商標)又はCANバス経由で接続されている)GNSSセンサ1258からのデータを処理することができる。SoC1204にはさらに、独自のDMAエンジンが含まれ得る、CPU1206をルーチン・データ管理タスクから解放するために使用され得る、専用の高性能マス・ストレージ・コントローラが含まれ得る。 SoC 1204 may further include a wide range of peripheral interfaces to enable peripherals, audio codecs, power management, and/or communication with other devices. SoC 1204 may be used to process data from cameras (e.g., connected via gigabit multimedia serial links and Ethernet), sensors (e.g., LIDAR sensor 1264, RADAR sensor 1260, etc., which may be connected via Ethernet), data from bus 1202 (e.g., vehicle 1200 speed, steering wheel position, etc.), and data from GNSS sensor 1258 (e.g., connected via Ethernet or CAN bus). SoC 1204 may further include a dedicated high-performance mass storage controller, which may include its own DMA engine, which may be used to offload CPU 1206 from routine data management tasks.
SoC1204は、自動化レベル3~5に及ぶ柔軟なアーキテクチャを有するエンド・ツー・エンド・プラットフォームであり、これにより、多様性及び冗長性のためのコンピュータ・ビジョン及びADAS手法を活用し且つ効率的に使用し、深層学習ツールとともに、柔軟で信頼性のある運転ソフトウェア・スタックのプラットフォームを提供する包括的な機能安全アーキテクチャを提供することができる。SoC1204は、従来のシステムよりも高速で信頼性が高く、さらにエネルギー効率及び空間効率に優れている場合がある。例えば、アクセラレータ1214は、CPU1206、GPU1208、及びデータ・ストア1216と組み合わせると、レベル3~5の自律車両に高速で効率的なプラットフォームを提供することができる。 SoC1204 is an end-to-end platform with a flexible architecture that spans automation levels 3-5, providing a comprehensive functional safety architecture that leverages and efficiently uses computer vision and ADAS techniques for diversity and redundancy, along with deep learning tools to provide a flexible and reliable platform for driving software stacks. SoC1204 may be faster, more reliable, and more energy and space efficient than traditional systems. For example, accelerator 1214, when combined with CPU 1206, GPU 1208, and data store 1216, can provide a fast and efficient platform for autonomous vehicles levels 3-5.
したがって、本技術は、従来のシステムでは実現できない能力及び機能を提供する。例えば、コンピュータ・ビジョン・アルゴリズムはCPU上で実行され得る。コンピュータ・ビジョン・アルゴリズムは、様々なビジュアル・データにわたって様々な処理アルゴリズムを実行するために、Cプログラミング言語などの高水準プログラミング言語を使用して構成され得る。しかしながら、CPUは、例えば、実行時間及び電力消費量に関連するものなど、多くのコンピュータ・ビジョン・アプリケーションのパフォーマンス要件を満たすことができないことが多い。特に、多くのCPUは、車両内ADASアプリケーションの要件であり、且つ実用レベル3~5の自律車両の要件である、複合物体検出アルゴリズムをリアルタイムで実行することができない。 The present technology thus provides capabilities and functionality not possible with conventional systems. For example, computer vision algorithms may be executed on the CPU. Computer vision algorithms may be constructed using high-level programming languages, such as the C programming language, to execute various processing algorithms across various visual data. However, CPUs often cannot meet the performance requirements of many computer vision applications, e.g., those related to execution time and power consumption. In particular, many CPUs cannot execute complex object detection algorithms in real time, which is a requirement for in-vehicle ADAS applications and for utility level 3-5 autonomous vehicles.
従来のシステムとは対照的に、CPUコンプレックス、GPUコンプレックス、及びハードウェア・アクセラレーション・クラスタを提供することによって、本明細書で説明する本技術は、複数のニューラル・ネットワークが同時に及び/又は連続して実行されることを可能にし、且つ結果を組み合わせてレベル3~5の自律運転機能を有効にすることを可能にする。例えば、DLA又はdGPU(例えば、GPU1220)上で実行されるCNNには、テキスト及び単語認識が含まれており、これにより、スーパーコンピュータが、ニューラル・ネットワークが具体的にはトレーニングされていない標識を含む、交通標識を読み取って理解することができる。DLAにはさらに、標識を識別し、解釈し、及び意味論的理解を提供でき、且つその意味論的理解をCPUコンプレックス上で実行されている経路計画モジュールに渡すことができるニューラル・ネットワークが含まれ得る。 In contrast to conventional systems, by providing a CPU complex, a GPU complex, and a hardware acceleration cluster, the technology described herein allows multiple neural networks to run simultaneously and/or sequentially, and the results to be combined to enable Level 3-5 autonomous driving functions. For example, a CNN running on the DLA or dGPU (e.g., GPU 1220) includes text and word recognition, allowing 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 that can identify, interpret, and provide a semantic understanding of signs, and pass that semantic understanding to a path planning module running on the CPU complex.
別の実例として、レベル3、4、又は5の運転に必要とされるように、複数のニューラル・ネットワークを同時に実行することができる。例えば、電光を伴う「注意:点滅光は凍結状態を示す」から成る警告標識が、複数のニューラル・ネットワークによって独立して又は集合的に解釈される場合がある。標識自体は、第1のデプロイされたニューラル・ネットワーク(例えば、トレーニングされているニューラル・ネットワーク)によって交通標識として識別され得、「点滅光は凍結状態を示す」というテキストは、第2のデプロイされたニューラル・ネットワークによって解釈され得る。第2のデプロイされたニューラル・ネットワークは、車両の経路計画ソフトウェア(好ましくはCPUコンプレックス上で実行している)に、点滅光が検知される場合は凍結状態が存在することを知らせる。点滅光は、第3のデプロイされたニューラル・ネットワークを複数のフレームで動作させて、車両の経路計画ソフトウェアに点滅光の存在(又は不在)を知らせることによって識別され得る。3つのニューラル・ネットワークはすべて、DLA内及び/又はGPU1208上などで同時に実行できる。 As another example, multiple neural networks can be run simultaneously, as required for level 3, 4, or 5 driving. For example, a warning sign consisting of "Caution: Flashing lights indicate icy conditions" accompanied by an electric light may be interpreted by multiple neural networks, either independently or collectively. The sign itself may be identified as a traffic sign by a first deployed neural network (e.g., the neural network being trained), and the text "Flashing lights indicate icy conditions" may be interpreted by a second deployed neural network. The second deployed neural network informs the vehicle's route planning software (preferably running on the CPU complex) that icy conditions exist if a flashing light is detected. The flashing light may be identified by running a third deployed neural network for multiple frames to inform the vehicle's route planning software of the presence (or absence) of the flashing light. All three neural networks may run simultaneously, such as within the DLA and/or on the GPU 1208.
いくつかの実例では、顔認識及び車両所有者の識別のためのCNNが、カメラ・センサからのデータを使用して、車両1200の認可された運転者及び/又は所有者の存在を識別することができる。常時オンのセンサ処理エンジンを使用して、所有者が運転者ドアに近づいたときに車両のロックを解除して、ライトを点け、また、セキュリティ・モードでは所有者が車両を離れたときに車両が動作しないようにすることができる。このようにして、SoC1204は、盗難及び/又はカージャックに対するセキュリティを提供する。 In some instances, CNN for facial recognition and vehicle owner identification can use data from the camera sensors to identify the presence of an authorized driver and/or owner of the vehicle 1200. An always-on sensor processing engine can be used to unlock the vehicle and turn on the lights when the owner approaches the driver's door, and a security mode can prevent the vehicle from operating when the owner leaves the vehicle. In this manner, the SoC 1204 provides security against theft and/or carjacking.
別の実例では、緊急車両検出及び識別のためのCNNが、マイク1296からのデータを使用して、緊急車両サイレンを検出及び識別することができる。一般的な分類器を使用してサイレンを検出し、手動で特徴を抽出する従来のシステムとは対照的に、SoC1204は、環境音及び都市音の分類だけでなく、視覚データの分類にもCNNを使用している。好ましい実施例では、DLA上で実行されるCNNは、緊急車両の相対的終速度を(例えば、ドップラー効果を使用することによって)識別するようにトレーニングされている。CNNはまた、GNSSセンサ1258によって識別されるように、車両が動作している地域に固有の緊急車両を識別するようにトレーニングされていてもよい。したがって、例えば、欧州で動作しているときは、CNNは欧州のサイレンを検出しようとし、合衆国では、CNNは北米のサイレンのみを識別しようとする。緊急車両が検出されると、制御プログラムを使用して緊急車両安全ルーチンを実行し、緊急車両が通過するまで、超音波センサ1262に支援されて、車両を減速させ、道路の脇に寄せ、車両を駐車し、及び/又は車両をアイドリングさせることができる。 In another example, a CNN for emergency vehicle detection and identification can use data from microphone 1296 to detect and identify emergency vehicle sirens. In contrast to conventional systems that use general classifiers to detect sirens and manually extract features, SoC 1204 uses a CNN to classify ambient and urban sounds as well as visual data. In a preferred embodiment, the CNN running on the DLA is trained to identify the relative terminal velocity of emergency vehicles (e.g., by using the Doppler effect). The CNN may also be trained to identify emergency vehicles specific to the region in which the vehicle is operating, as identified by GNSS sensor 1258. Thus, for example, when operating in Europe, the CNN will attempt to detect European sirens, and in the United States, the CNN will attempt to identify only North American sirens. When an emergency vehicle is detected, the control program can be used to execute emergency vehicle safety routines and, assisted by ultrasonic sensor 1262, can slow the vehicle, pull over to the side of the road, park the vehicle, and/or idle the vehicle until the emergency vehicle has passed.
車両には、高速インターコネクト(例えば、PCIe)を介してSoC1204に結合され得るCPU1218(例えば、ディスクリートCPU、即ち、dCPU)が含まれ得る。例えば、CPU1218にはX86プロセッサが含まれ得る。CPU1218を使用して、ADASセンサとSoC1204との間で不整合である可能性のある結果の調停、並びに/又はコントローラ1236及び/若しくはインフォテインメントSoC1230のステータス及び正常性のモニタリングなど、様々な機能のいずれかを実行することができる。 The vehicle may include a CPU 1218 (e.g., a discrete CPU, i.e., dCPU) that may be coupled to the SoC 1204 via a high-speed interconnect (e.g., PCIe). For example, the CPU 1218 may include an X86 processor. The CPU 1218 may be used to perform any of a variety of functions, such as reconciling potentially inconsistent results between the ADAS sensors and the SoC 1204, and/or monitoring the status and health of the controller 1236 and/or the infotainment SoC 1230.
車両1200には、高速インターコネクト(例えば、NVIDIAのNVLINK)を介してSoC1204に結合され得るGPU1220(例えば、ディスクリートGPU、即ち、dGPU)が含まれ得る。GPU1220は、冗長及び/又は異なるニューラル・ネットワークを実行することなどによって、追加の人工知能の機能を提供することができ、また、車両1200のセンサからの入力(例えば、センサ・データ)に基づいてニューラル・ネットワークをトレーニング及び/又は更新するために使用することができる。 Vehicle 1200 may include GPU 1220 (e.g., a discrete GPU, or dGPU), which may be coupled to SoC 1204 via a high-speed interconnect (e.g., NVIDIA's NVLINK). GPU 1220 may provide additional artificial intelligence functionality, such as by running redundant and/or different neural networks, and may be used to train and/or update neural networks based on input (e.g., sensor data) from sensors in vehicle 1200.
車両1200にはさらに、1つ又は複数のワイヤレス・アンテナ1226(例えば、携帯電話アンテナ、ブルートゥース(登録商標)・アンテナなど、異なる通信プロトコル用の1つ又は複数のワイヤレス・アンテナ)が含まれ得るネットワーク・インターフェース1224が含まれ得る。ネットワーク・インターフェース1224を使用して、クラウド(例えば、サーバ1278及び/又は他のネットワーク・デバイスを有する)、他の車両、及び/又はコンピューティング・デバイス(例えば、乗客のクライアント・デバイス)とのインターネット経由のワイヤレス接続を可能にすることができる。他の車両と通信するには、2つの車両間に直接リンクが確立されてもよいし、及び/又は間接リンクが確立されてもよい(例えば、ネットワーク間及びインターネット経由)。直接リンクは、車両間通信リンクを使用して提供することができる。車両間通信リンクは、車両1200に近接している車両(例えば、車両1200の前、横、及び/又は後ろにいる車両)に関する情報を車両1200に提供することができる。この機能は、車両1200の協調適応型クルーズ制御機能の一部であり得る。 The vehicle 1200 may further include a network interface 1224, which may include one or more wireless antennas 1226 (e.g., one or more wireless antennas for different communication protocols, such as a cellular antenna, a Bluetooth antenna, etc.). The network interface 1224 may be used to enable wireless connections over the Internet with the cloud (e.g., with a server 1278 and/or other network devices), other vehicles, and/or computing devices (e.g., passenger client devices). To communicate with other vehicles, a direct link may be established between the two vehicles and/or an indirect link may be established (e.g., between networks and over the Internet). A direct link may be provided using a vehicle-to-vehicle communication link. The vehicle-to-vehicle communication link may provide the vehicle 1200 with information about vehicles in close proximity to the vehicle 1200 (e.g., vehicles in front of, beside, and/or behind the vehicle 1200). This function may be part of the cooperative adaptive cruise control function of the vehicle 1200.
ネットワーク・インターフェース1224には、変調及び復調機能を提供し、コントローラ1236がワイヤレス・ネットワーク経由で通信することを可能にするSoCが含まれ得る。ネットワーク・インターフェース1224には、ベースバンドから無線周波数へのアップコンバージョン、及び無線周波数からベースバンドへのダウン・コンバージョンのための無線周波数フロント・エンドが含まれ得る。周波数コンバージョンは、よく知られているプロセスを用いて実行することができる、及び/又はスーパーヘテロダイン・プロセスを使用して実行することができる。いくつかの実例では、無線周波数フロント・エンド機能は、別個のチップによって提供され得る。ネットワーク・インターフェースには、LTE、WCDMA(登録商標)、UMTS、GSM、CDMA2000、ブルートゥース(登録商標)、ブルートゥース(登録商標)LE、Wi-Fi、Z-Wave、ジグビー、LoRaWAN、及び/又は他のワイヤレス・プロトコルを介する通信のためのワイヤレス機能が含まれ得る。 The network interface 1224 may include a SoC that provides modulation and demodulation functions and enables the controller 1236 to communicate over a wireless network. The network interface 1224 may include a radio frequency front end for upconversion from baseband to radio frequency and downconversion from radio frequency to baseband. The frequency conversion may be performed using well-known processes and/or may be performed using a superheterodyne process. In some instances, the radio frequency front end functions may be provided by a separate chip. The network interface may include wireless functions for communication via LTE, WCDMA, UMTS, GSM, CDMA2000, Bluetooth, Bluetooth LE, Wi-Fi, Z-Wave, ZigBee, LoRaWAN, and/or other wireless protocols.
車両1200にはさらに、外部(例えば、SoC1204の外部の)ストレージが含まれ得るデータ・ストア1228が含まれ得る。データ・ストア1228には、RAM、SRAM、DRAM、VRAM、フラッシュ、ハード・ディスク、並びに/又は少なくとも1ビットのデータを記憶し得る他のコンポーネント及び/若しくはデバイスなどの1つ又は複数のストレージ要素が含まれ得る。 Vehicle 1200 may further include data store 1228, which may include external (e.g., external to SoC 1204) storage. Data store 1228 may include one or more storage elements, such as RAM, SRAM, DRAM, VRAM, flash, hard disk, and/or other components and/or devices that may store at least one bit of data.
車両1200にはさらに、マッピング、知覚、占有グリッドの生成、及び/又は経路計画機能を支援するために、GNSSセンサ1258(例えば、GPS及び/又は支援付きGPSセンサ)が含まれ得る。例えば、イーサネット(登録商標)・ツー・シリアル(RS-232)ブリッジを有するUSBコネクタを使用するGPSを含むが、これに限定されない任意の数のGNSSセンサ1258を使用することができる。 Vehicle 1200 may further include GNSS sensors 1258 (e.g., GPS and/or assisted GPS sensors) to assist with mapping, perception, occupancy grid generation, and/or path planning functions. Any number of GNSS sensors 1258 may be used, including, but not limited to, a GPS using a USB connector with an Ethernet-to-Serial (RS-232) bridge, for example.
車両1200にはさらに、RADARセンサ1260が含まれ得る。RADARセンサ1260は、暗闇及び/又は厳しい気象条件でも長距離にある車両を検出するために車両1200によって使用され得る。RADAR機能安全レベルはASIL Bであり得る。RADARセンサ1260は、(例えば、RADARセンサ1260によって生成されたデータを送信するために)CAN及び/又はバス1202を使用して、物体追跡データを制御及び物体追跡データにアクセスすることができ、いくつかの実例では、未加工データにアクセスするためにイーサネット(登録商標)へのアクセスを有する。様々なRADARセンサ・タイプを使用することができる。例えば、また、限定されることなく、RADARセンサ1260は、前部、後部、及び側部のRADAR使用に適している場合がある。ある実例では、パルス・ドップラーRADARセンサが使用される。 The vehicle 1200 may further include a RADAR sensor 1260. The RADAR sensor 1260 may be used by the vehicle 1200 to detect vehicles at long distances even in darkness and/or severe weather conditions. The RADAR functional safety level may be ASIL B. The RADAR sensor 1260 may control and access object tracking data using CAN and/or bus 1202 (e.g., to transmit data generated by the RADAR sensor 1260), and in some instances has access to Ethernet to access raw data. Various RADAR sensor types may be used. For example, and without limitation, the RADAR sensor 1260 may be suitable for front, rear, and side RADAR use. In one instance, a pulsed Doppler RADAR sensor is used.
RADARセンサ1260には、狭視野で長距離、広視野で短距離、短距離側部カバレージなど、異なる構成が含まれ得る。いくつかの実例では、長距離RADARを適応型クルーズ制御機能に使用してもよい。長距離RADARシステムは、250mの範囲内など、2つ以上の独立したスキャンによって実現される広い視野を提供することができる。RADARセンサ1260は、静止している物体と動いている物体を区別するのに役立ち、緊急ブレーキ支援及び前方衝突警報のためにADASシステムによって使用され得る。長距離RADARセンサには、複数の(例えば、6以上の)固定RADARアンテナと高速CAN及びFlexRayインターフェースとを有するモノスタティック・マルチモーダルRADARが含まれ得る。6つのアンテナを用いる実例では、中央の4つのアンテナが、隣接する車線の往来からの干渉を最小限に抑えながら、より高速で車両1200の周囲を記録するように設計されている集束ビーム・パターンを作成し得る。他の2つのアンテナは視野を拡大することができ、車両1200がいる車線に入ってくる又はそこから出て行く車両をすばやく検出することを可能にする。 The RADAR sensor 1260 may include different configurations, such as long range with narrow field of view, short range with wide field of view, and short range side coverage. In some instances, the long range RADAR may be used for adaptive cruise control functions. Long range RADAR systems may provide a wide field of view achieved by two or more independent scans, such as within a 250m range. The RADAR sensor 1260 helps distinguish between stationary and moving objects and may be used by ADAS systems for emergency brake assistance and forward collision warning. Long range RADAR sensors may include monostatic multimodal RADAR with multiple (e.g., six or more) fixed RADAR antennas and high speed CAN and FlexRay interfaces. In an instance using six antennas, the four central antennas may create a focused beam pattern designed to record the surroundings of the vehicle 1200 at higher speeds while minimizing interference from traffic in adjacent lanes. The other two antennas can expand the field of view, allowing vehicle 1200 to quickly detect vehicles entering or exiting the lane it is in.
中距離RADARシステムには、一実例として、最大1260m(前部)又は80m(後部)の範囲と、最大42度(前部)又は1250度(後部)の視野とが含まれ得る。短距離RADARシステムには、後部バンパの両端に取り付けられるように設計されたRADARセンサが含まれ得るが、これに限定されない。後部バンパの両端に取り付けられる場合、このようなRADARセンサシステムは、車両の後部及び隣にある死角を常にモニタリングする2つのビームを作成することができる。 Mid-range RADAR systems, by way of example, may include a range of up to 1260 meters (front) or 80 meters (rear) and a field of view of up to 42 degrees (front) or 1250 degrees (rear). Short-range RADAR systems may include, but are not limited to, RADAR sensors designed to be mounted on either end of a rear bumper. When mounted on either end of a rear bumper, such a RADAR sensor system may create two beams that constantly monitor the blind spots behind and adjacent to the vehicle.
短距離RADARシステムは、死角検出及び/又は車線変更支援のためにADASシステムで使用され得る。 Short-range RADAR systems can be used in ADAS systems for blind spot detection and/or lane change assistance.
車両1200にはさらに、超音波センサ1262が含まれ得る。超音波センサ1262は、車両1200の前部、背部、及び/又は側部に配置することができ、駐車支援並びに/又は占有グリッドの作成及び更新に使用することができる。様々な超音波センサ1262を使用することができ、異なる検出範囲(例えば、2.5m、4m)に異なる超音波センサ1262を使用することができる。超音波センサ1262は、ASIL Bの機能安全レベルで動作し得る。 The vehicle 1200 may further include ultrasonic sensors 1262. The ultrasonic sensors 1262 may be located on the front, back, and/or sides of the vehicle 1200 and may be used for parking assistance and/or creating and updating an occupancy grid. A variety of ultrasonic sensors 1262 may be used, and different ultrasonic sensors 1262 may be used for different detection ranges (e.g., 2.5 m, 4 m). The ultrasonic sensors 1262 may operate at a functional safety level of ASIL B.
車両1200には、LIDARセンサ1264が含まれ得る。LIDARセンサ1264は、物体及び歩行者検出、緊急ブレーキ、衝突回避、及び/又は他の機能に使用することができる。LIDARセンサ1264は、機能安全レベルASIL Bであり得る。いくつかの実例では、車両1200には、(例えば、ギガビット・イーサネット(登録商標)・スイッチにデータを提供するために)イーサネット(登録商標)を使用し得る複数のLIDARセンサ1264(例えば、2個、4個、6個など)が含まれ得る。 The vehicle 1200 may include a LIDAR sensor 1264. The LIDAR sensor 1264 may be used for object and pedestrian detection, emergency braking, collision avoidance, and/or other functions. The LIDAR sensor 1264 may be functional safety level ASIL B. In some instances, the vehicle 1200 may include multiple LIDAR sensors 1264 (e.g., 2, 4, 6, etc.) that may use Ethernet (e.g., to provide data to a Gigabit Ethernet switch).
いくつかの実例では、LIDARセンサ1264は、360度の視野について物体及びその距離のリストを提供可能であり得る。市販されているLIDARセンサ1264の広告されている範囲は、約100mで、精度は2cm~3cmで、例えば、100Mbpsイーサネット(登録商標)接続のためのサポートがある場合がある。いくつかの実例では、1つ又は複数の非突出型のLIDARセンサ1264が使用され得る。このような実例では、LIDARセンサ1264は、車両1200の前部、後部、側部、及び/又はコーナーに埋め込まれ得る小型デバイスとして実装され得る。このような実例では、LIDARセンサ1264は、水平方向に最大120度、垂直方向に最大35度の視野を、低反射性物体でさえも200mの範囲で提供することができる。前部に取り付けられたLIDARセンサ1264は、45度~135度の水平視野について構成され得る。 In some instances, the LIDAR sensor 1264 may be capable of providing a list of objects and their distances for a 360 degree field of view. Commercially available LIDAR sensors 1264 may have an advertised range of approximately 100 m with an accuracy of 2 cm to 3 cm, with support for, for example, a 100 Mbps Ethernet connection. In some instances, one or more non-protruding LIDAR sensors 1264 may be used. In such instances, the LIDAR sensor 1264 may be implemented as a small device that may be embedded in the front, rear, sides, and/or corners of the vehicle 1200. In such instances, the LIDAR sensor 1264 may provide a field of view of up to 120 degrees horizontally and up to 35 degrees vertically, with a range of 200 m even for low-reflecting objects. A front-mounted LIDAR sensor 1264 may be configured for a horizontal field of view of 45 degrees to 135 degrees.
いくつかの実例では、3DフラッシュLIDARなどのLIDAR技術も使用され得る。3DフラッシュLIDARは、レーザーのフラッシュを送信源として使用し、約200mまでの車両の周囲を照明する。フラッシュLIDARユニットには、レーザー・パルスの通過時間と各ピクセルの反射光とを記録するレセプタが含まれている。これは、ひいては車両から物体までの範囲に対応する。フラッシュLIDARは、レーザー・フラッシュ毎に周囲の高精度で歪みのない画像が生成されることを可能にし得る。いくつかの実例では、車両1200の各側に1つずつ、4つのフラッシュLIDARセンサを配備することができる。使用可能な3DフラッシュLIDARシステムには、ファン以外の可動部品のないソリッドステート3Dステアリング・アレイLIDARカメラ(例えば、非スキャンLIDARデバイス)が含まれている。フラッシュLIDARデバイスは、フレーム毎に5ナノ秒クラスのI(アイ・セーフ)レーザー・パルスを使用し、反射されたレーザー光を3D範囲点群及び共登録された強度データの形でキャプチャすることができる。フラッシュLIDARを使用することによって、また、フラッシュLIDARは可動部品のないソリッドステート・デバイスであることから、LIDARセンサ1264はモーション・ブラー、振動、及び/又は衝撃の影響を受けにくくなり得る。 In some instances, LIDAR technology such as 3D flash LIDAR may also be used. 3D flash LIDAR uses a flash of a laser as a transmission source to illuminate the surroundings of the vehicle up to about 200 m. The flash LIDAR unit includes a receptor that records the transit time of the laser pulse and the reflected light of each pixel, which in turn corresponds to the range from the vehicle to the object. Flash LIDAR may allow a highly accurate and distortion-free image of the surroundings to be generated with every laser flash. In some instances, four flash LIDAR sensors may be deployed, one on each side of the vehicle 1200. Usable 3D flash LIDAR systems include solid-state 3D steering array LIDAR cameras with no moving parts other than the fan (e.g., non-scanning LIDAR devices). Flash LIDAR devices use 5 nanosecond class I (eye-safe) laser pulses per frame and may capture reflected laser light in the form of a 3D range point cloud and co-registered intensity data. By using flash LIDAR, and because flash LIDAR is a solid-state device with no moving parts, the LIDAR sensor 1264 may be less susceptible to motion blur, vibration, and/or shock.
車両にはさらに、IMUセンサ1266が含まれ得る。IMUセンサ1266は、いくつかの実例では、車両1200の後車軸の中央に設置することができる。IMUセンサ1266には、例えば、加速度計、磁力計、ジャイロスコープ、磁気コンパス、及び/又は他のセンサ・タイプが含まれ得るが、これらに限定されない。6軸アプリケーションなどのいくつかの実例では、IMUセンサ1266には、加速度計及びジャイロスコープが含まれ得るが、9軸アプリケーションでは、IMUセンサ1266には、加速度計、ジャイロスコープ、及び磁力計が含まれ得る。 The vehicle may further include an IMU sensor 1266. In some instances, the IMU sensor 1266 may be located at the center of the rear axle of the vehicle 1200. The IMU sensor 1266 may include, for example, but is not limited to, an accelerometer, a magnetometer, a gyroscope, a magnetic compass, and/or other sensor types. In some instances, such as a 6-axis application, the IMU sensor 1266 may include an accelerometer and a gyroscope, while in a 9-axis application, the IMU sensor 1266 may include an accelerometer, a gyroscope, and a magnetometer.
いくつかの実施例では、IMUセンサ1266は、マイクロ電気機械システム(MEMS:Micro-Electro-Mechanical System)慣性センサ、高感度GPS受信器、及び高度カルマン・フィルタリング・アルゴリズムを組み合わせて、位置、速度、及び姿勢の推定値を提供する、小型で高性能のGPS支援慣性航行システム(GPS/INS:GPS-Aided Inertial Navigation System)として実装され得る。したがって、いくつかの実例では、IMUセンサ1266は、GPSからIMUセンサ1266へ速度変化を直接観察して関連付けることで、磁気センサからの入力を必要とせずに車両1200が進行方向を推定することを可能にし得る。いくつかの実例では、IMUセンサ1266とGNSSセンサ1258とを、1つの統合ユニットに組み合わせることができる。 In some examples, the IMU sensor 1266 may be implemented as a small, high-performance GPS-Aided Inertial Navigation System (GPS/INS) that combines Micro-Electro-Mechanical System (MEMS) inertial sensors, a highly sensitive GPS receiver, and advanced Kalman filtering algorithms to provide estimates of position, velocity, and attitude. Thus, in some instances, the IMU sensor 1266 may enable the vehicle 1200 to estimate heading by directly observing and correlating velocity changes from the GPS to the IMU sensor 1266 without requiring input from a magnetic sensor. In some instances, the IMU sensor 1266 and the GNSS sensor 1258 may be combined into one integrated unit.
車両には、車両1200内及び/又は車両1200の周りに置かれるマイク1296が含まれ得る。マイク1296は、特に緊急車両の検出及び識別に使用され得る。 The vehicle may include microphones 1296 located within and/or around the vehicle 1200. The microphones 1296 may be used, among other things, to detect and identify emergency vehicles.
車両にはさらに、ステレオ・カメラ1268、ワイドビュー・カメラ1270、赤外線カメラ1272、サラウンド・カメラ1274、長距離及び/若しくは中距離カメラ1298、並びに/又は他のカメラ・タイプを含む、任意の数のカメラ・タイプが含まれ得る。カメラを使用して、車両1200の周囲全体の画像データをキャプチャすることができる。使用されるカメラのタイプは、車両1200の実施例及び要件によって異なり、また、任意の組み合わせのカメラ・タイプを使用して、車両1200の周囲に必要なカバレージを提供することができる。また、カメラの数は、実施例によって異なり得る。例えば、車両には6つのカメラ、7つのカメラ、10個のカメラ、12個のカメラ、及び/又は別の数のカメラが含まれている場合がある。このカメラは、一例として、また、限定されることなく、ギガビット・マルチメディア・シリアル・リンク(GMSL:Gigabit Multimedia Serial Link)及び/又はギガビット・イーサネット(登録商標)をサポートしていてもよい。カメラの各々については、図12及び図13に関して本明細書でより詳細に説明している。 The vehicle may further include any number of camera types, including stereo cameras 1268, wide-view cameras 1270, infrared cameras 1272, surround cameras 1274, long-range and/or mid-range cameras 1298, and/or other camera types. The cameras may be used to capture image data of the entire surroundings of the vehicle 1200. The types of cameras used may vary depending on the embodiment and requirements of the vehicle 1200, and any combination of camera types may be used to provide the necessary coverage around the vehicle 1200. The number of cameras may also vary depending on the embodiment. For example, the vehicle may include six cameras, seven cameras, ten cameras, twelve cameras, and/or another number of cameras. The cameras may support, by way of example and without limitation, Gigabit Multimedia Serial Link (GMSL) and/or Gigabit Ethernet. Each of the cameras is described in more detail herein with respect to Figures 12 and 13.
車両1200にはさらに、振動センサ1242が含まれ得る。振動センサ1242は、車軸など、車両のコンポーネントの振動を測定することができる。例えば、振動の変化は路面の変化を示す場合がある。別の実例では、2つ以上の振動センサ1242が使用される場合、振動の差を使用して路面の摩擦又は滑りの程度を判定することができる(例えば、振動の差が動力駆動の車軸と自由回転車軸との間にある場合)。 The vehicle 1200 may further include a vibration sensor 1242. The vibration sensor 1242 may measure vibrations of a vehicle component, such as an axle. For example, a change in vibration may indicate a change in the road surface. In another example, if two or more vibration sensors 1242 are used, the difference in vibration may be used to determine the degree of friction or slippage of the road surface (e.g., if there is a difference in vibration between a powered axle and a free-running axle).
車両1200にはADASシステム1238が含まれ得る。ADASシステム1238には、いくつかの実例では、SoCが含まれ得る。ADASシステム1238には、自律/適応/自動クルーズ制御(ACC:Autonomous/Adaptive/Automatic Cruise Control)、協調適応型クルーズ制御(CACC:Cooperative Adaptive Cruise Control)、前方衝突警報(FCW:Forward Crash Warning)、自動緊急ブレーキ(AEB)、車線逸脱警報(LDW)、車線維持支援(LKA:Lane Keep Assist)、死角警報(BSW:Blind Spot Warning)、後方交差交通警報(RCTW:Rear Cross-Traffic Warning)、衝突警報システム(CWS:Collision Warning System)、車線センタリング(LC:Lane Centering)、並びに/又は他の特徴及び機能が含まれ得る。 The vehicle 1200 may include an ADAS system 1238. The ADAS system 1238 may, in some instances, include a SoC. The ADAS system 1238 includes an autonomous/adaptive/automatic cruise control (ACC), a cooperative adaptive cruise control (CACC), a forward crash warning (FCW), an automatic emergency braking (AEB), a lane departure warning (LDW), a lane keep assist (LKA), a blind spot warning (BSW), a rear cross-traffic warning (RCTW), a collision warning system (CWS), and a collision warning system (CWS). System), Lane Centering (LC), and/or other features and functions.
ACCシステムは、RADARセンサ1260、LIDARセンサ1264、及び/又はカメラを使用することができる。ACCシステムには、縦方向ACC及び/又は横方向ACCが含まれ得る。縦方向ACCは、車両1200の直前の車両までの距離をモニタリング及び制御し、車速を自動的に調整して前方車両から安全な距離を維持する。横方向ACCは、距離維持を実行し、必要に応じて車線変更を車両1200に助言する。横方向ACCは、LC及びCWSなどの他のADASアプリケーションに関連している。 The ACC system may use RADAR sensors 1260, LIDAR sensors 1264, and/or cameras. The ACC system may include longitudinal ACC and/or lateral ACC. Longitudinal ACC monitors and controls the distance to the vehicle immediately preceding the vehicle 1200 and automatically adjusts the vehicle speed to maintain a safe distance from the vehicle ahead. Lateral ACC performs distance maintenance and advises the vehicle 1200 to change lanes if necessary. Lateral ACC is relevant to other ADAS applications such as LC and CWS.
CACCは、他の車両からの情報を使用する。これらの情報は、ネットワーク・インターフェース1224及び/又はワイヤレス・アンテナ1226を経由して、他の車両からワイヤレス・リンク経由で、又は間接的にネットワーク接続経由(例えば、インターネット経由)で受信され得る。直接リンクは車両間(V2V:Vehicle-to-Vehicle)通信リンクによって提供され得、間接リンクはインフラストラクチャ-車両間(I2V:Infrastructure-to-Vehicle)通信リンクであり得る。一般に、V2V通信概念は、直前の車両(例えば、車両1200のすぐ前にあり、車両1200と同じ車線にある車両)に関する情報を提供し、I2V通信概念は、さらに前方の交通に関する情報を提供する。CACCシステムには、I2V情報源及びV2V情報源のいずれか又は両方が含まれ得る。車両1200の前の車両の情報を所与として、CACCはより信頼性が高くなり得、交通の流れを滑らかにし、道路渋滞を低減する可能性がある。 CACC uses information from other vehicles. These information can be received from other vehicles via a wireless link via the network interface 1224 and/or wireless antenna 1226, or indirectly via a network connection (e.g., via the Internet). The direct link can be provided by a vehicle-to-vehicle (V2V) communication link, and the indirect link can be an infrastructure-to-vehicle (I2V) communication link. In general, the V2V communication concept provides information about the immediately preceding vehicle (e.g., the vehicle immediately ahead of the vehicle 1200 and in the same lane as the vehicle 1200), and the I2V communication concept provides information about the traffic further ahead. The CACC system can include either or both I2V and V2V information sources. Given information about the vehicle in front of vehicle 1200, CACC can be more reliable, potentially smoothing traffic flow and reducing road congestion.
FCWシステムは、運転者に危険を警告するように設計されており、これにより、運転者は訂正措置を行うことができる。FCWシステムは、専用プロセッサ、DSP、FPGA、及び/又はASICに結合されている前面カメラ及び/又はRADARセンサ1260を使用する。専用プロセッサ、DSP、FPGA、及び/又はASICは、ディスプレイ、スピーカ、及び/又は振動コンポーネントなどの運転者フィードバックに電気的に結合されている。FCWシステムは、音、視覚的警報、振動、及び/又はクイック・ブレーキ・パルスなどの形で警報を提供することができる。 The FCW system is designed to alert the driver to hazards so that the driver can take corrective action. The FCW system uses a front camera and/or RADAR sensor 1260 coupled to a dedicated processor, DSP, FPGA, and/or ASIC. The dedicated processor, DSP, FPGA, and/or ASIC is electrically coupled to driver feedback such as a display, speaker, and/or vibration components. The FCW system can provide warnings in the form of sound, visual alerts, vibrations, and/or quick brake pulses.
AEBシステムは、別の車両又は他の物体との前方衝突が今にも起こりそうなことを検知し、運転者が指定された時間又は距離パラメータ内に訂正措置を行わない場合は、自動的にブレーキをかけることができる。AEBシステムは、専用プロセッサ、DSP、FPGA、及び/又はASICに結合されている前面カメラ及び/又はRADARセンサ1260を使用することができる。AEBシステムは、危険を検出すると、通常は最初に衝突を回避するための訂正措置を行うように運転者に警告する。運転手が訂正措置を行わない場合、AEBシステムは、自動的にブレーキをかけて、予測される衝突の影響を阻止しようとするか又は少なくとも軽減しようとすることができる。AEBシステムには、ダイナミック・ブレーキ・サポート及び/又は衝突緊急ブレーキなどの手法が含まれ得る。 An AEB system can detect an impending forward collision with another vehicle or other object and automatically apply the brakes if the driver does not take corrective action within specified time or distance parameters. The AEB system can use a front camera and/or RADAR sensor 1260 coupled to a dedicated processor, DSP, FPGA, and/or ASIC. Upon detecting a hazard, the AEB system will usually first alert the driver to take corrective action to avoid the collision. If the driver does not take corrective action, the AEB system can automatically apply the brakes to try to prevent or at least mitigate the effects of the predicted collision. An AEB system can include techniques such as dynamic brake support and/or collision emergency braking.
LDWシステムは、車両1200が車線区分線を交差すると、ハンドル又は座席の振動などの視覚的、聴覚的、及び/又は触覚的な警報を提供して運転者に警告する。方向指示灯を作動させることによって、運転者が意図的な車線逸脱を示す場合は、LDWシステムは作動しない。LDWシステムは、専用プロセッサ、DSP、FPGA、及び/又はASICに結合されている前面カメラを使用することができ、専用プロセッサ、DSP、FPGA、及び/又はASICは、ディスプレイ、スピーカ、及び/又は振動コンポーネントなどの運転者フィードバックに電気的に結合されている。 The LDW system provides visual, audible, and/or tactile warnings, such as vibration of the steering wheel or seat, to alert the driver when the vehicle 1200 crosses a lane marking. If the driver indicates an intentional lane departure by activating the turn signals, the LDW system is not activated. The LDW system may use a front camera coupled to a dedicated processor, DSP, FPGA, and/or ASIC, which is electrically coupled to driver feedback, such as a display, speaker, and/or vibration components.
LKAシステムは、LDWシステムの変形形態である。LKAシステムは、車両1200が車線から出始めた場合に車両1200を訂正するためのステアリング入力又はブレーキを提供する。 The LKA system is a variation of the LDW system. The LKA system provides steering input or braking to correct the vehicle 1200 if it begins to leave its lane.
BSWシステムは、自動車の死角にある車両を検出し、運転者に警告する。BSWシステムは、車線の合流又は変更が安全でないことを示す視覚的、聴覚的、及び/又は触覚的な警告を提供することができる。システムは、運転者が方向指示灯を使用すると、追加の警報を提供することができる。BSWシステムは、専用プロセッサ、DSP、FPGA、及び/又はASICに結合されている後面カメラ及び/又はRADARセンサ1260を使用することができる。専用プロセッサ、DSP、FPGA、及び/又はASICは、ディスプレイ、スピーカ、及び/又は振動コンポーネントなどの運転者フィードバックに電気的に結合されている。 The BSW system detects vehicles in the vehicle's blind spot and warns the driver. The BSW system can provide visual, audible, and/or tactile warnings that it is unsafe to merge or change lanes. The system can provide an additional warning when the driver uses the turn signals. The BSW system can use a rear camera and/or RADAR sensor 1260 that is coupled to a dedicated processor, DSP, FPGA, and/or ASIC. The dedicated processor, DSP, FPGA, and/or ASIC are electrically coupled to driver feedback such as a display, speaker, and/or vibration components.
RCTWシステムは、車両1200がバックしているときに後面カメラの範囲外に物体が検出されると、視覚的、聴覚的、及び/又は触覚的な通知を提供することができる。いくつかのRCTWシステムには、衝突を回避するために車両のブレーキを確実にかけるAEBが含まれていてもよい。RCTWシステムは、専用プロセッサ、DSP、FPGA、及び/又はASICに結合されている1つ又は複数の後面RADARセンサ1260を使用することができる。専用プロセッサ、DSP、FPGA、及び/又はASICは、ディスプレイ、スピーカ、及び/又は振動コンポーネントなどの運転者フィードバックに電気的に結合されている。 The RCTW system may provide visual, audible, and/or tactile notifications when an object is detected outside the range of the rear camera when the vehicle 1200 is backing up. Some RCTW systems may include AEB to positively apply the vehicle's brakes to avoid a collision. The RCTW system may use one or more rear RADAR sensors 1260 that are coupled to a dedicated processor, DSP, FPGA, and/or ASIC. The dedicated processor, DSP, FPGA, and/or ASIC are electrically coupled to driver feedback such as a display, speaker, and/or vibration components.
従来のADASシステムでは、誤検出結果が発生しやすく、これは、運転者にとってうっとうしく気を散らす可能性があるが、通常は壊滅的ではない。ADASシステムは運転者に警告し、運転者が安全状態が本当に存在するかどうかを判断し、それに応じて行動することを可能にするからである。しかしながら、自律車両1200では、矛盾する結果の場合には、車両1200自体が、プライマリ・コンピュータからの結果を聞き入れるか、セカンダリ・コンピュータ(例えば、第1のコントローラ1236又は第2のコントローラ1236)からの結果を聞き入れるかを判断しなければならない。例えば、いくつかの実施例では、ADASシステム1238は、バックアップ・コンピュータ合理性モジュールに知覚情報を提供するためのバックアップ及び/又はセカンダリ・コンピュータであり得る。バックアップ・コンピュータ合理性モニタは、ハードウェア・コンポーネント上で冗長な多様なソフトウェアを実行して、認識及び動的な運転タスクの障害を検出することができる。ADASシステム1238からの出力は、監視MCUに提供され得る。プライマリ・コンピュータからの出力とセカンダリ・コンピュータからの出力とが矛盾する場合、監視MCUは矛盾を調停して安全な動作を確保する方法を判断する必要がある。 Conventional ADAS systems are prone to false positive results, which can be annoying and distracting to the driver, but are usually not catastrophic, because the ADAS system alerts the driver, allowing the driver to determine whether a safety condition truly exists and act accordingly. However, in an autonomous vehicle 1200, in the case of conflicting results, the vehicle 1200 itself must determine whether to listen to the results from the primary computer or the secondary computer (e.g., the first controller 1236 or the second controller 1236). For example, in some embodiments, the ADAS system 1238 may be a backup and/or secondary computer to provide perception information to a backup computer rationality module. The backup computer rationality monitor may run redundant and diverse software on hardware components to detect impairments in cognitive and dynamic driving tasks. Output from the ADAS system 1238 may be provided to a monitoring MCU. If the output from the primary computer conflicts with the output from the secondary computer, the supervisory MCU must determine how to reconcile the conflict and ensure safe operation.
いくつかの実例では、プライマリ・コンピュータは、選択した結果へのプライマリ・コンピュータの信頼を示す信頼スコアを監視MCUに提供するように構成され得る。信頼スコアが閾値を超えると、セカンダリ・コンピュータが矛盾する又は不整合の結果を提供するかどうかに関係なく、監視MCUはプライマリ・コンピュータの指導に従い得る。信頼スコアが閾値を満たしておらず、プライマリ・コンピュータとセカンダリ・コンピュータとが異なる結果(例えば、矛盾)を示している場合、監視MCUは、コンピュータ間で調停を行い、適切な結果を判断することができる。 In some instances, the primary computer may be configured to provide the monitoring MCU with a trust score indicating the primary computer's confidence in a selected outcome. If the trust score exceeds a threshold, the monitoring MCU may follow the primary computer's guidance regardless of whether the secondary computer provides conflicting or inconsistent results. If the trust score does not meet the threshold and the primary and secondary computers indicate different outcomes (e.g., conflicts), the monitoring MCU may mediate between the computers to determine an appropriate outcome.
監視MCUは、セカンダリ・コンピュータが誤アラームを提供する条件を、プライマリ・コンピュータ及びセカンダリ・コンピュータからの出力に基づいて判断するようにトレーニングされ、構成されているニューラル・ネットワークを実行するように構成され得る。したがって、監視MCU内のニューラル・ネットワークは、セカンダリ・コンピュータの出力をいつ信頼できて、いつ信頼できないかを学習することができる。例えば、セカンダリ・コンピュータがRADARベースのFCWシステムである場合、監視MCU内のニューラル・ネットワークは、いつFCWシステムが、アラームをトリガする排水溝の格子又はマンホール・カバーなど、実際には危険ではない金属製の物体を識別しているかを学習することができる。同様に、セカンダリ・コンピュータがカメラベースのLDWシステムである場合、監視MCU内のニューラル・ネットワークは、自転車運転者又は歩行者が存在し、車線逸脱が実際に最も安全な操作である場合にLDWをオーバーライドすることを学習することができる。監視MCU上で動作するニューラル・ネットワークを含む実施例では、監視MCUには、関連するメモリとともにニューラル・ネットワークを実行するのに適したDLA又はGPUの少なくとも1つが含まれ得る。好ましい実施例では、監視MCUには、SoC1204のコンポーネントが含まれ得るか、及び/又は該コンポーネントとして含まれ得る。 The monitoring MCU may be configured to execute a neural network that is trained and configured to determine conditions under which the secondary computer will provide a false alarm based on the outputs from the primary and secondary computers. Thus, the neural network in the monitoring MCU can learn when to trust the output of the secondary computer and when not to trust it. For example, if the secondary computer is a RADAR-based FCW system, the neural network in the monitoring MCU can learn when the FCW system is identifying a metal object that is not actually a hazard, such as a drain grate or manhole cover, that triggers an alarm. Similarly, if the secondary computer is a camera-based LDW system, the neural network in the monitoring MCU can learn to override the LDW when a bicyclist or pedestrian is present and lane departure is in fact the safest maneuver. In an embodiment that includes a neural network running on the monitoring MCU, the monitoring MCU may include at least one of a DLA or GPU suitable for executing the neural network along with associated memory. In a preferred embodiment, the supervisory MCU may include and/or be included as a component of the SoC1204.
他の実例では、ADASシステム1238には、従来のコンピュータ・ビジョンのルールを使用してADAS機能を実行するセカンダリ・コンピュータが含まれ得る。したがって、セカンダリ・コンピュータはクラシック・コンピュータ・ビジョン・ルール(if-then)を使用することができ、監視MCUにニューラル・ネットワークが存在することによって、信頼性、安全性、及びパフォーマンスを向上させることができる。例えば、多様な実装例及び意図的な非同一性によって、システム全体の耐障害性を、特に、ソフトウェア(又はソフトウェア・ハードウェア・インターフェース)機能によって生じる障害に対して高める。例えば、プライマリ・コンピュータ上で実行されているソフトウェアにソフトウェア・バグ又はエラーがあり、セカンダリ・コンピュータ上で実行されている非同一ソフトウェア・コードが全体的に同じ結果を提供する場合、監視MCUは、全体的な結果が正しく、プライマリ・コンピュータによって使用されているソフトウェア又はハードウェアのバグが重大なエラーの原因ではないとのより大きい信頼を有することができる。 In another example, the ADAS system 1238 may include a secondary computer that performs ADAS functions using traditional computer vision rules. Thus, the secondary computer may use classic computer vision rules (if-then), and the presence of a neural network in the supervisory MCU may improve reliability, safety, and performance. For example, the diverse implementations and intentional non-identity may increase the fault tolerance of the overall system, especially against failures caused by software (or software-hardware interface) functions. For example, if the software running on the primary computer has a software bug or error, and the non-identical software code running on the secondary computer provides the same overall results, the supervisory MCU may have greater confidence that the overall results are correct and that a bug in the software or hardware used by the primary computer is not the cause of the critical error.
いくつかの実例では、ADASシステム1238の出力は、プライマリ・コンピュータの知覚ブロック及び/又はプライマリ・コンピュータの動的運転タスク・ブロックに供給され得る。例えば、ADASシステム1238が、すぐ前に物体があることにより前方衝突警報を示している場合、知覚ブロックは、物体を識別するときにこの情報を使用することができる。他の実例では、セカンダリ・コンピュータには、トレーニングされ、したがって、本明細書に説明するように、誤検出のリスクを低減する独自のニューラル・ネットワークがあってもよい。 In some instances, the output of the ADAS system 1238 may be fed to the perception block of the primary computer and/or the dynamic driving task block of the primary computer. For example, if the ADAS system 1238 indicates a forward collision warning due to an object directly ahead, the perception block may use this information when identifying the object. In other instances, the secondary computer may have its own neural network that is trained and thus reduces the risk of false positives as described herein.
車両1200にはさらに、インフォテインメントSoC1230(例えば、車両内インフォテインメント・システム(IVI:In-Vehicle Infotainment))が含まれ得る。SoCとして図示及び説明されているが、インフォテインメント・システムはSoCでなくてもよく、2つ以上の個別のコンポーネントを含んでいてもよい。インフォテインメントSoC1230には、オーディオ(例えば、音楽、携帯情報端末、ナビゲーション命令、ニュース、ラジオなど)、ビデオ(例えば、TV、映画、ストリーミングなど)、電話(例えば、ハンズフリー通話)、ネットワーク接続性(例えば、LTE、Wi-Fi)、及び/又は情報サービス(例えば、ナビゲーション・システム、後方駐車支援、無線データ・システム、燃料レベル、総走行距離、ブレーキ燃料レベル、オイル・レベル、ドアの開閉、エア・フィルタ情報などの車両関連情報)を車両1200に提供するために使用できるハードウェアとソフトウェアとの組み合わせが含まれ得る。例えば、インフォテインメントSoC1230には、ラジオ、ディスク・プレーヤ、ナビゲーション・システム、ビデオ・プレーヤ、USB及びブルートゥース(登録商標)接続性、カーピュータ(carputer)、車内エンターテインメント、Wi-Fi、ハンドル・オーディオ・コントロール、ハンズフリー音声コントロール、ヘッドアップ・ディスプレイ(HUD:Heads-Up Display)、HMIディスプレイ1234、テレマティックス・デバイス、(例えば、様々なコンポーネント、特徴、及び/若しくはシステムを制御する並びに/又はそれらと対話するための)コントロール・パネル、及び/又は他のコンポーネントが含まれ得る。インフォテインメントSoC1230はさらに、ADASシステム1238からの情報、計画された車両操作などの自律運転情報、軌跡、周囲環境の情報(例えば、交差点情報、車両情報、道路情報など)、及び/又は他の情報などの(例えば、視覚的及び/又は可聴式の)情報を車両のユーザに提供するために使用され得る。 Vehicle 1200 may further include an infotainment SoC 1230 (e.g., an In-Vehicle Infotainment System (IVI)). Although shown and described as a SoC, the infotainment system need not be a SoC and may include two or more separate components. Infotainment SoC 1230 may include a combination of hardware and software that can be used to provide audio (e.g., music, personal digital assistant, navigation instructions, news, radio, etc.), video (e.g., TV, movies, streaming, etc.), telephony (e.g., hands-free calling), network connectivity (e.g., LTE, Wi-Fi), and/or information services (e.g., navigation system, rear parking assist, wireless data system, vehicle related information such as fuel level, total mileage, brake fuel level, oil level, door opening and closing, air filter information, etc.) to vehicle 1200. For example, the infotainment SoC 1230 may include a radio, a disc player, a navigation system, a video player, USB and Bluetooth connectivity, a carputer, in-car entertainment, Wi-Fi, steering wheel audio controls, hands-free voice controls, a Heads-Up Display (HUD), an HMI display 1234, telematics devices, a control panel (e.g., for controlling and/or interacting with various components, features, and/or systems), and/or other components. The infotainment SoC 1230 may further be used to provide information (e.g., visual and/or audible) to a user of the vehicle, such as information from the ADAS system 1238, autonomous driving information such as planned vehicle maneuvers, trajectory, surrounding environment information (e.g., intersection information, vehicle information, road information, etc.), and/or other information.
インフォテインメントSoC1230には、GPU機能が含まれ得る。インフォテインメントSoC1230は、バス1202(例えば、CANバス、イーサネット(登録商標)など)を介して、車両1200の他のデバイス、システム、及び/又はコンポーネントと通信することができる。いくつかの実例では、プライマリ・コントローラ1236(例えば、車両1200のプライマリ及び/又はバックアップ・コンピュータ)が故障した場合に、インフォテインメント・システムのGPUが一部の自動運転機能を実行できるように、インフォテインメントSoC1230を監視MCUに結合することができる。このような実例では、インフォテインメントSoC1230は、本明細書に説明するように、車両1200を安全停止まで運転代行モードに入れることができる。 Infotainment SoC 1230 may include GPU functionality. Infotainment SoC 1230 may communicate with other devices, systems, and/or components of vehicle 1200 via bus 1202 (e.g., CAN bus, Ethernet, etc.). In some instances, infotainment SoC 1230 may be coupled to a supervisory MCU such that the infotainment system's GPU can perform some autonomous driving functions if primary controller 1236 (e.g., primary and/or backup computer of vehicle 1200) fails. In such instances, infotainment SoC 1230 may place vehicle 1200 in a proxy mode until a safe stop, as described herein.
車両1200にはさらに、計器群1232(例えば、デジタル・ダッシュ、電子計器群、デジタル計器パネルなど)が含まれ得る。計器群1232には、コントローラ及び/又はスーパーコンピュータ(例えば、個別のコントローラ又はスーパーコンピュータ)が含まれ得る。計器群1232には、スピードメータ、燃料レベル、油圧、タコメータ、オドメータ、方向指示器、ギヤシフト位置指示器、シート・ベルト警報灯、駐車ブレーキ警報灯、エンジン異常灯、エアバッグ(SRS)システム情報、照明コントロール、安全システム・コントロール、ナビゲーション情報などの計測セットが含まれ得る。いくつかの実例では、情報は、インフォテインメントSoC1230及び計器類1232に表示され得る、及び/又はそれらの間で共有され得る。つまり、計器類1232は、インフォテインメントSoC1230の一部として含まれていてもよく、逆もまた同様である。 The vehicle 1200 may further include an instrument cluster 1232 (e.g., a digital dash, an electronic instrument cluster, a digital instrument panel, etc.). The instrument cluster 1232 may include a controller and/or a supercomputer (e.g., a separate controller or a supercomputer). The instrument cluster 1232 may include a set of instruments such as a speedometer, a fuel level, an oil pressure, a tachometer, an odometer, a turn indicator, a gear shift position indicator, a seat belt warning light, a parking brake warning light, an engine fault light, an airbag (SRS) system information, lighting control, a safety system control, navigation information, etc. In some instances, information may be displayed on and/or shared between the infotainment SoC 1230 and the instrument cluster 1232. That is, the instrument cluster 1232 may be included as part of the infotainment SoC 1230, or vice versa.
前述のように、少なくともいくつかの実施例では、車載プラットフォーム100(図1を参照)は、自律車両1200のコンポーネントであり得る。このような実施例では、コントローラ1236に車載SoC104が含まれている。例えば、車載SoC104は、SoC1204の1つとして実装され得る。 As previously mentioned, in at least some embodiments, the vehicle platform 100 (see FIG. 1) may be a component of the autonomous vehicle 1200. In such embodiments, the controller 1236 includes the vehicle SoC 104. For example, the vehicle SoC 104 may be implemented as one of the SoCs 1204.
図15は、本開示のいくつかの実施例による、クラウドベースのサーバと図12の自律車両の例1200との間の通信のためのシステム図である。システム1276には、サーバ1278、ネットワーク1290、及び車両1200を含む車両が含まれ得る。サーバ1278には、複数のGPU1284(A)~1284(H)(本明細書では集合的にGPU1284と呼ぶ)、PCIeスイッチ1282(A)~1282(H)(本明細書では集合的にPCIeスイッチ1282と呼ぶ)、及び/又はCPU1280(A)~1280(B)(本明細書では集合的にCPU1280と呼ぶ)が含まれ得る。GPU1284、CPU1280、及びPCIeスイッチは、例えば、NVIDIAによって開発されたNVLinkインターフェース1288及び/又はPCIe接続1286などであるが、これらに限定されない高速インターコネクトで相互接続され得る。いくつかの実例では、GPU1284は、NVLink及び/又はNVSwitch SoCを介して接続され、GPU1284及びPCIeスイッチ1282は、PCIeインターコネクトを介して接続されている。8つのGPU1284、2つのCPU1280、及び2つのPCIeスイッチが図示されているが、これは、限定を意図したものではない。実施例に応じて、サーバ1278の各々には、任意の数のGPU1284、CPU1280、及び/又はPCIeスイッチが含まれ得る。例えば、サーバ1278の各々には、8個、16個、32個、及び/又はそれ以上のGPU1284が含まれていてもよい。 15 is a system diagram for communication between a cloud-based server and the example autonomous vehicle 1200 of FIG. 12, according to some embodiments of the present disclosure. The system 1276 may include a server 1278, a network 1290, and a vehicle including the vehicle 1200. The server 1278 may include a number of GPUs 1284(A)-1284(H) (collectively referred to herein as GPUs 1284), a PCIe switch 1282(A)-1282(H) (collectively referred to herein as PCIe switch 1282), and/or a CPU 1280(A)-1280(B) (collectively referred to herein as CPU 1280). The GPUs 1284, CPUs 1280, and PCIe switch may be interconnected with a high-speed interconnect, such as, but not limited to, an NVLink interface 1288 and/or a PCIe connection 1286 developed by NVIDIA. In some instances, the GPUs 1284 are connected via NVLink and/or NVSwitch SoCs, and the GPUs 1284 and PCIe switch 1282 are connected via a PCIe interconnect. Although eight GPUs 1284, two CPUs 1280, and two PCIe switches are shown, this is not intended to be limiting. Depending on the embodiment, each of the servers 1278 may include any number of GPUs 1284, CPUs 1280, and/or PCIe switches. For example, each of the servers 1278 may include 8, 16, 32, and/or more GPUs 1284.
サーバ1278は、ネットワーク1290を介して、及び車両から、最近始まった道路工事など、予想外の又は変化した道路状況を示す画像を表す画像データを受信することができる。サーバ1278は、ネットワーク1290を介して、及び車両に、ニューラル・ネットワーク1292、更新されたニューラル・ネットワーク1292、及び/又は地図情報1294(交通及び道路状況に関する情報を含む)を送信することができる。地図情報1294の更新には、建設現場、道路の穴、迂回路、洪水、及び/又は他の障害物に関する情報など、HDマップ1222の更新が含まれ得る。いくつかの実例では、ニューラル・ネットワーク1292、更新されたニューラル・ネットワーク1292、及び/又はマップ情報1294は、環境内の任意の数の車両から受信したデータにおいて表される新しいトレーニング及び/又は経験から、並びに/或いは(例えば、サーバ1278及び/又は他のサーバを使用して)データセンタで実行されたトレーニングに基づいてもたらされたものであり得る。 Server 1278 may receive image data over network 1290 and from the vehicles, representing images showing unexpected or changed road conditions, such as recently begun road construction. Server 1278 may transmit neural network 1292, updated neural network 1292, and/or map information 1294 (including information about traffic and road conditions) over network 1290 and to the vehicles. Updates to map information 1294 may include updates to HD map 1222, such as information about construction sites, potholes, detours, flooding, and/or other obstacles. In some instances, neural network 1292, updated neural network 1292, and/or map information 1294 may result from new training and/or experience represented in data received from any number of vehicles in the environment and/or based on training performed at a data center (e.g., using server 1278 and/or other servers).
サーバ1278は、トレーニング・データに基づいて機械学習モデル(例えば、ニューラル・ネットワーク)をトレーニングするために使用され得る。トレーニング・データは、車両によって生成されてもよい、及び/又は、(例えば、ゲーム・エンジンを使用して)シミュレーションで生成されてもよい。いくつかの実例では、トレーニング・データは、タグ付けされ(例えば、ニューラル・ネットワークが教師あり学習からの恩恵を受ける場合)、及び/又は他の前処理が行われるが、他の実例では、トレーニング・データは、タグ付け及び/又は前処理されない(例えば、ニューラル・ネットワークが教師あり学習を必要としない場合)。トレーニングは、任意の1つ又は複数の機械学習手法のクラスに従って実行され得る。これには、教師ありトレーニング、半教師ありトレーニング、教師なしトレーニング、自己学習、強化学習、連合学習、転移学習、特徴学習(主成分分析及びクラスタ分析を含む)、多重線形部分空間学習、多様体学習、表現学習(スペア辞書学習を含む)、ルールベースの機械学習、異常検出、及びこれらの任意の変形例又は組み合わせが含まれるが、これらに限定されない。機械学習モデルがトレーニングされると、機械学習モデルは車両によって使用され得る(例えば、ネットワーク1290を介して車両に送信される)、及び/又は機械学習モデルは、車両を遠隔モニタリングするために、サーバ1278によって使用され得る。 The server 1278 may be used to train a machine learning model (e.g., a neural network) based on training data. The training data may be generated by the vehicle and/or generated in a simulation (e.g., using a game engine). In some instances, the training data is tagged (e.g., if the neural network benefits from supervised learning) and/or otherwise preprocessed, while in other instances, 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 according to any one or more classes of machine learning techniques, including, but not limited to, supervised training, semi-supervised training, unsupervised training, self-learning, reinforcement learning, federated learning, transfer learning, feature learning (including principal component analysis and cluster analysis), multiple linear subspace learning, manifold learning, representation learning (including spare dictionary learning), rule-based machine learning, anomaly detection, and any variation or combination thereof. Once the machine learning model is trained, it may be used by the vehicle (e.g., transmitted to the vehicle via network 1290) and/or the machine learning model may be used by server 1278 to remotely monitor the vehicle.
いくつかの実例では、サーバ1278は、車両からデータを受信し、リアルタイム・インテリジェント推論のために、そのデータを最新のリアルタイム・ニューラル・ネットワークに適用することができる。サーバ1278には、深層学習スーパーコンピュータ、及び/又はNVIDIAによって開発されたDGX及びDGXステーション・マシンなど、GPU1284によって給電される専用のAIコンピュータが含まれ得る。しかしながら、いくつかの実例では、サーバ1278には、CPU電源式のデータセンタのみを使用する深層学習インフラストラクチャが含まれていてもよい。 In some instances, server 1278 can receive data from vehicles and apply the data to state-of-the-art real-time neural networks for real-time intelligent inference. Server 1278 can include deep learning supercomputers and/or dedicated AI computers powered by GPU 1284, such as the DGX and DGX Station machines developed by NVIDIA. However, in some instances, server 1278 can include a deep learning infrastructure that uses only CPU-powered data centers.
サーバ1278の深層学習インフラストラクチャは、高速且つリアルタイムの推論が可能であり得、また、その能力を使用して、車両1200内のプロセッサ、ソフトウェア、及び/又は関連ハードウェアの正常性を評価及び検証することができる。例えば、深層学習インフラストラクチャは、一連の画像及び/又は車両1200が(例えば、コンピュータ・ビジョン及び/又は他の機械学習物体分類手法を介して)その一連の画像において位置を特定した物体など、定期的な更新を車両1200から受信することができる。深層学習インフラストラクチャは、独自のニューラル・ネットワークを実行して物体を識別し、それらを車両1200によって識別された物体と比較することができ、結果が一致せず、車両1200内のAIに異常があるとインフラストラクチャが判定した場合は、サーバ1278は車両1200に信号を送信して、車両1200のフェイルセーフ・コンピュータに制御を引き受け、乗員に通知し、安全な駐車操作を完了するよう指示することができる。 The deep learning infrastructure of server 1278 may be capable of fast and real-time inference and may use that capability to assess and verify the health of the processor, software, and/or associated hardware in vehicle 1200. For example, the deep learning infrastructure may receive periodic updates from vehicle 1200, such as a series of images and/or objects that vehicle 1200 has located in the series of images (e.g., via computer vision and/or other machine learning object classification techniques). The deep learning infrastructure may run its own neural network to identify objects and compare them to those identified by vehicle 1200, and if the results do not match and the infrastructure determines that there is an abnormality in the AI in vehicle 1200, server 1278 may send a signal to vehicle 1200 to instruct the failsafe computer of vehicle 1200 to assume control, notify the occupants, and complete a safe parking maneuver.
推論のために、サーバ1278には、GPU1284と、1つ又は複数のプログラム可能な推論アクセラレータ(例えば、NVIDIAのTensorRT)とが含まれ得る。GPU電源式のサーバと推論アクセラレーションとの組み合わせは、リアルタイムの応答性を可能にすることができる。パフォーマンスがそれほど重要でない場合など、他の実例では、CPU、FPGA、及び他のプロセッサによって給電されるサーバを推論に使用することができる。 For inference, server 1278 may include GPU 1284 and one or more programmable inference accelerators (e.g., NVIDIA's TensorRT). The combination of a GPU-powered server with inference acceleration can enable real-time responsiveness. In other instances, such as when performance is less critical, servers powered by CPUs, FPGAs, and other processors can be used for inference.
コンピューティング・デバイスの例
図16は、本開示のいくつかの実施例を実装する際の使用に適しているコンピューティング・デバイス1600の例のブロック図である。コンピューティング・デバイス1600には、次のデバイス、即ち、メモリ1604、1つ又は複数の中央処理ユニット(CPU)1606、1つ又は複数のグラフィックス処理ユニット(GPU)1608、通信インターフェース1610、I/Oポート1612、入力/出力コンポーネント1614、電源1616、1つ又は複数のプレゼンテーション・コンポーネント1618(例えば、ディスプレイ)、及び1つ又は複数の論理ユニット1620を、直接又は間接的に結合するインターコネクト・システム1602が含まれ得る。
16 is a block diagram of an example computing device 1600 suitable for use in implementing some embodiments of the present disclosure. The computing device 1600 may include an interconnect system 1602 that directly or indirectly couples the following devices: memory 1604, one or more central processing units (CPUs) 1606, one or more graphics processing units (GPUs) 1608, a communications interface 1610, I/O ports 1612, input/output components 1614, a power source 1616, one or more presentation components 1618 (e.g., displays), and one or more logic units 1620.
図16の様々なブロックは、インターコネクト・システム1602を介して回線で接続されているものとして示されているが、これは限定を意図したものではなく、明確にするためだけのものである。例えば、いくつかの実施例では、ディスプレイ・デバイスなどのプレゼンテーション・コンポーネント1618は、I/Oコンポーネント1614と見なされ得る(例えば、ディスプレイがタッチ・スクリーンの場合)。別の実例として、CPU1606及び/又はGPU1608には、メモリが含まれ得る(例えば、メモリ1604は、GPU1608、CPU1606、及び/又は他のコンポーネントのメモリに加えて、ストレージ・デバイスを表し得る)。つまり、図16のコンピューティング・デバイスは例示にすぎない。すべて図16のコンピューティング・デバイスの範囲内であると企図されるため、「ワークステーション」、「サーバ」、「ラップトップ」、「デスクトップ」、「タブレット」、「クライアント・デバイス」、「モバイル・デバイス」、「ハンドヘルド・デバイス」、「ゲーム・コンソール」、「電子制御ユニット(ECU:Electronic Control Unit)」、「仮想現実システム」、「拡張現実システム」、及び/又は他のデバイス若しくはシステムのタイプなどのカテゴリ間で区別はされない。 16 are shown as being hardwired through interconnect system 1602 for clarity only, and not for any limitation. For example, in some embodiments, a presentation component 1618, such as a display device, may be considered an I/O component 1614 (e.g., if the display is a touch screen). As another example, CPU 1606 and/or GPU 1608 may include memory (e.g., memory 1604 may represent a storage device in addition to memory of GPU 1608, CPU 1606, and/or other components). Thus, the computing devices of FIG. 16 are merely illustrative. No distinction is made between categories such as "workstations," "servers," "laptops," "desktops," "tablets," "client devices," "mobile devices," "handheld devices," "game consoles," "electronic control units (ECUs)," "virtual reality systems," "augmented reality systems," and/or other device or system types, as all are intended to be within the scope of the computing devices of FIG. 16.
インターコネクト・システム1602は、アドレス・バス、データ・バス、制御バス、又はこれらの組み合わせなどの1つ又は複数のリンク又はバスを表し得る。インターコネクト・システム1602には、業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、拡張業界標準アーキテクチャ(EISA:Extended Industry Standard Architecture)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA:Video Electronics Standards Association)バス、ペリフェラル・コンポーネント・インターコネクト(PCI)バス、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe)バス、及び/又は別のタイプのバス若しくはリンクなど、1つ又は複数のバス又はリンクのタイプが含まれ得る。いくつかの実施例では、コンポーネント間に直接接続がある。一実例として、CPU1606は、メモリ1604に直接接続され得る。さらに、CPU1606は、GPU1608に直接接続され得る。コンポーネント間に直接又はポイント・ツー・ポイント接続がある場合、インターコネクト・システム1602は、接続を実行するためにPCIeリンクを含み得る。これらの実例では、PCIバスがコンピューティング・デバイス1600に含まれている必要はない。 The interconnect system 1602 may represent one or more links or buses, such as an address bus, a data bus, a control bus, or a combination thereof. The interconnect system 1602 may include one or more bus or link types, such as an Industry Standard Architecture (ISA) bus, an Extended Industry Standard Architecture (EISA) bus, a Video Electronics Standards Association (VESA) bus, a Peripheral Component Interconnect (PCI) bus, a Peripheral Component Interconnect Express (PCIe) bus, and/or another type of bus or link. In some embodiments, there are direct connections between the components. As one example, the CPU 1606 may be directly connected to the memory 1604. Additionally, the CPU 1606 may be directly connected to the GPU 1608. Where there are direct or point-to-point connections between the components, the interconnect system 1602 may include PCIe links to effectuate the connections. In these examples, a PCI bus need not be included in the computing device 1600.
メモリ1604には、様々なコンピュータ可読媒体が含まれ得る。コンピュータ可読媒体は、コンピューティング・デバイス1600によってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータ可読媒体には、揮発性及び不揮発性媒体の両方、並びにリムーバブル及び非リムーバブル媒体が含まれ得る。例として、また、限定ではないが、コンピュータ可読媒体には、コンピュータ記憶媒体及び通信媒体が含まれ得る。 Memory 1604 may include a variety of computer readable media. Computer readable media may be any available media that may be accessed by computing device 1600. Computer readable media may include both volatile and nonvolatile media, and removable and non-removable media. By way of example, and not limitation, computer readable media may include computer storage media and communication media.
コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラム・モジュール、及び/又は他のデータ・タイプなどの情報の記憶のための任意の方法又は技術で実装された揮発性及び不揮発性媒体の両方及び/又はリムーバブル及び非リムーバブル媒体が含まれ得る。例えば、メモリ1604は、コンピュータ可読命令(例えば、プログラム及び/又はオペレーティング・システムなどのプログラム要素を表す)を記憶し得る。コンピュータ記憶媒体には、RAM、ROM、EEPROM、フラッシュ・メモリ若しくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD:Digital Versatile Disk)若しくは他の光学ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ若しくは他の磁気ストレージ・デバイス、又は、所望の情報を記憶するために使用され得、且つコンピューティング・デバイス1600によってアクセスされ得る任意の他の媒体が含まれ得るが、これらに限定されない。本明細書で使用される場合、コンピュータ記憶媒体には、信号自体は含まれない。 Computer storage media may include both volatile and non-volatile media and/or removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules, and/or other data types. For example, memory 1604 may store computer readable instructions (e.g., representing programs and/or program elements such as an operating system). Computer storage media may include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that may be used to store the desired information and that may be accessed by computing device 1600. As used herein, computer storage media does not include the signals themselves.
コンピュータ記憶媒体は、搬送波又は他の輸送機構などの変調されたデータ信号でコンピュータ可読命令、データ構造、プログラム・モジュール、及び/又は他のデータ・タイプを実施し得、任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、信号内の情報を符号化するようにその特性のうちの1つ又は複数が設定又は変更されている信号を指し得る。例として、限定ではないが、コンピュータ記憶媒体には、有線ネットワーク又は直接有線接続などの有線メディア、並びに音響、RF、赤外線、及び他のワイヤレス媒体などのワイヤレス媒体が含まれ得る。上記のいずれかの組み合わせもまた、コンピュータ可読媒体の範囲に含まれる。 Computer storage media may embody computer-readable instructions, data structures, program modules, and/or other data types in a modulated data signal, such as a carrier wave or other transport mechanism, and include any information delivery media. The term "modulated data signal" may refer to a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, computer storage media may include wired media, such as a wired network or direct-wired connection, and wireless media, such as acoustic, RF, infrared and other wireless media. Combinations of any of the above are also included within the scope of computer-readable media.
CPU1606は、コンピュータ可読命令のうちの少なくともいくつかを実行して、コンピューティング・デバイス1600の1つ又は複数のコンポーネントを制御して、本明細書で説明される方法及び/又はプロセスのうちの1つ又は複数を実行するように構成され得る。CPU1606の各々には、多数のソフトウェア・スレッドを同時に処理することが可能である1つ又は複数のコア(例えば、1個、2個、4個、8個、28個、72個など)が含まれ得る。CPU1606には、任意のタイプのプロセッサが含まれ得、また、実装されているコンピューティング・デバイス1600のタイプに応じて、異なるタイプのプロセッサ(例えば、モバイル・デバイスではコア数が少ないプロセッサ、サーバではコア数が多いプロセッサ)が含まれ得る。例えば、コンピューティング・デバイス1600のタイプに応じて、プロセッサは、縮小命令セット計算(RISC)を使用して実装されるアドバンストRISCマシン(ARM:Advanced RISC Machine)プロセッサ、又は複合命令セット計算(CISC:Complex Instruction Set Computing)を使用して実装される×86プロセッサであり得る。コンピューティング・デバイス1600には、1つ又は複数のマイクロプロセッサ、又は数学コプロセッサなどの補助コプロセッサに加えて、1つ又は複数のCPU1606が含まれ得る。 The CPUs 1606 may be configured to execute at least some of the computer-readable instructions to control one or more components of the computing device 1600 to perform one or more of the methods and/or processes described herein. Each of the CPUs 1606 may include one or more cores (e.g., 1, 2, 4, 8, 28, 72, etc.) capable of simultaneously processing multiple software threads. The CPUs 1606 may include any type of processor and may include different types of processors (e.g., a processor with fewer cores for a mobile device and a processor with more cores for a server) depending on the type of computing device 1600 being implemented. For example, depending on the type of computing device 1600, the processor may be an Advanced RISC Machine (ARM) processor implemented using Reduced Instruction Set Computing (RISC) or an x86 processor implemented using Complex Instruction Set Computing (CISC). Computing device 1600 may include one or more CPUs 1606 in addition to one or more microprocessors or auxiliary coprocessors such as math coprocessors.
CPU1606に加えて又はそれに代えて、GPU1608は、コンピュータ可読命令のうちの少なくともいくつかを実行して、コンピューティング・デバイス1600の1つ又は複数のコンポーネントを制御して、本明細書で説明される方法及び/又はプロセスのうちの1つ又は複数を実行するように構成され得る。GPU1608のうちの1つ又は複数が、(例えば、CPU1606のうちの1つ又は複数との統合GPUであり得、及び/或いはGPUのうちの1つ又は複数がディスクリートGPUであり得る。実施例では、GPU1608のうちの1つ又は複数が、CPU1606のうちの1つ又は複数のコプロセッサであり得る。GPU1608は、コンピューティング・デバイス1600によって使用されて、グラフィックス(例えば、3Dグラフィックス)がレンダリングされるか、又は汎用計算が実行され得る。例えば、GPU1608は、GPUでの汎用計算(GPGPU:General-Purpose computing on GPU)に使用され得る。GPU1608には、数百又は数千のソフトウェア・スレッドを同時に処理できる数百又は数千のコアが含まれ得る。GPU1608は、レンダリング・コマンド(例えば、ホスト・インターフェース経由で受信したCPU1606からのレンダリング・コマンド)に応答して、出力画像のピクセル・データを生成し得る。GPU1608には、ピクセル・データ、又はGPGPUデータなどの任意の他の適切なデータを記憶するための、ディスプレイ・メモリなどのグラフィックス・メモリが含まれ得る。ディスプレイ・メモリは、メモリ1604の一部として含まれていてもよい。GPU1608には、(例えば、リンクを介して)並行して動作する2つ以上のGPUが含まれ得る。リンクは、GPUを直接接続することも(例えば、NVLINKを使用して)、スイッチを介してGPUを接続することもできる(例えば、NVSwitchを使用して)。組み合わされた場合、各GPU1608は、出力の異なる部分又は異なる出力についてピクセル・データ又はGPGPUデータを生成することができる(例えば、第1の画像に第1のGPU、及び第2の画像に第2のGPU)。各GPUは、独自のメモリが含まれていても、他のGPUとメモリを共有してもよい。 In addition to or in place of the CPU 1606, the GPU 1608 may be configured to execute at least some of the computer-readable instructions to control one or more components of the computing device 1600 to perform one or more of the methods and/or processes described herein. One or more of the GPUs 1608 may be integrated GPUs (e.g., with one or more of the CPUs 1606) and/or one or more of the GPUs may be discrete GPUs. In an embodiment, one or more of the GPUs 1608 may be a coprocessor or coprocessors of the CPUs 1606. The GPU 1608 may be used by the computing device 1600 to render graphics (e.g., 3D graphics) or perform general-purpose computing. For example, the GPU 1608 may be configured to perform general-purpose computing on a GPU (GPGPU). A graphics processor (GPU) 1608 may be used for the graphics processing unit 1602. The GPU 1608 may include hundreds or thousands of cores capable of simultaneously processing hundreds or thousands of software threads. The GPU 1608 may generate pixel data for an output image in response to rendering commands (e.g., rendering commands received from the CPU 1606 via a host interface). The GPU 1608 may include a graphics memory, such as a display memory, for storing pixel data or any other suitable data, such as GPGPU data. The display memory is included as part of the memory 1604. GPU 1608 may include two or more GPUs operating in parallel (e.g., via links). The links may connect the GPUs directly (e.g., using NVLINK) or through a switch (e.g., using NVSwitch). When combined, each GPU 1608 may generate pixel data or GPGPU data for a different portion of the output or for a different output (e.g., a first GPU for a first image and a second GPU for a second image). Each GPU may include its own memory or may share memory with the other GPUs.
CPU1606及び/若しくはGPU1608に加えて又はそれらに代えて、論理ユニット1620は、コンピュータ可読命令のうちの少なくともいくつかを実行して、コンピューティング・デバイス1600の1つ又は複数のコンポーネントを制御して、本明細書で説明される方法及び/又はプロセスのうちの1つ又は複数を実行するように構成され得る。実施例では、CPU1608、GPU1608、及び/又は論理ユニット1620は、方法、プロセス、及び/又はこれらの部分の任意の組み合わせを個別に又は共同で実行し得る。論理ユニット1620のうちの1つ若しくは複数が、CPU1606及び/又はGPU1608のうちの1つ若しくは複数の一部であっても及び/又は統合されていてもよく、並びに/或いは論理ユニット1620のうちの1つ又は複数が、個別のコンポーネントであるか、そうでなければ、CPU1606及び/又はGPU1608の外部にあってもよい。実施例では、論理ユニット1620のうちの1つ又は複数が、CPU1606のうちの1つ又は複数及び/或いはGPU1608のうちの1つ又は複数のコプロセッサであり得る。 In addition to or in place of the CPU 1606 and/or GPU 1608, the logic unit 1620 may be configured to execute at least some of the computer-readable instructions to control one or more components of the computing device 1600 to perform one or more of the methods and/or processes described herein. In an embodiment, the CPU 1608, the GPU 1608, and/or the logic unit 1620 may individually or jointly execute any combination of methods, processes, and/or portions thereof. One or more of the logic units 1620 may be part of and/or integrated with one or more of the CPU 1606 and/or GPU 1608, and/or one or more of the logic units 1620 may be separate components or otherwise external to the CPU 1606 and/or GPU 1608. In an embodiment, one or more of the logic units 1620 may be co-processors of one or more of the CPUs 1606 and/or one or more of the GPUs 1608.
論理ユニット1620の例には、テンソル・コア(TC:Tensor Core)、テンソル処理ユニット(TPU:Tensor Processing Unit)、ピクセル・ビジュアル・コア(PVC:Pixel Visual Core)、ビジョン処理ユニット(VPU:Vision Processing Unit)、グラフィックス処理クラスタ(GPC:Graphics Processing Cluster)、テクスチャ処理クラスタ(TPC:Texture Processing Cluster)、ストリーミング・マルチプロセッサ(SM:Streaming Multiprocessor)、ツリー・トラバーサル・ユニット(TTU:Tree Traversal Unit)、人工知能アクセラレータ(AIA:Artificial Intelligence Accelerator)、深層学習アクセラレータ(DLA:Deep Learning Accelerator)、算術論理ユニット(ALU:Arithmetic-Logic Unit)、特定用途向け集積回路(ASIC:Application-Specific Integrated Circuit)、浮動小数点ユニット(FPU:Floating Point Unit)、I/O要素、ペリフェラル・コンポーネント・インターコネクト(PCI:Peripheral Component Interconnect)又はペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe)要素など、1つ又は複数の処理コア及び/又はそのコンポーネントが含まれる。 Examples of the logical unit 1620 include a tensor core (TC), a tensor processing unit (TPU), a pixel visual core (PVC), a vision processing unit (VPU), a graphics processing cluster (GPC), a texture processing cluster (TPC), a streaming multiprocessor (SM), a tree traversal unit (TTU), an artificial intelligence accelerator (AIA), and a scalable processor (SPC). The processor may include one or more processing cores and/or components thereof, such as a deep learning accelerator (DLA), an arithmetic logic unit (ALU), an application-specific integrated circuit (ASIC), a floating point unit (FPU), an I/O element, a peripheral component interconnect (PCI) or a peripheral component interconnect express (PCIe) element.
通信インターフェース1610には、コンピューティング・デバイス1600が、有線及び/又はワイヤレス通信を含む電子通信ネットワークを介して他のコンピューティング・デバイスと通信することを可能にする、1つ又は複数の受信器、送信器、及び/或いはトランシーバが含まれ得る。通信インターフェース1610には、ワイヤレス・ネットワーク(例えば、Wi-Fi、Z-Wave、ブルートゥース(登録商標)、ブルートゥース(登録商標)LE、ジグビーなど)、有線ネットワーク(例えば、イーサネット(登録商標)又はInfiniBand経由の通信)、ロー・パワー・ワイド・エリア・ネットワーク(例えば、LoRaWAN、SigFoxなど)、及び/又はインターネットなどの多数の異なるネットワークのうちのいずれかを介した通信を可能にするためにコンポーネント及び機能が含まれ得る。 The communications interface 1610 may include one or more receivers, transmitters, and/or transceivers that enable the computing device 1600 to communicate with other computing devices over electronic communications networks, including wired and/or wireless communications. The communications interface 1610 may include components and functionality to enable communication over any of a number of different networks, such as wireless networks (e.g., Wi-Fi, Z-Wave, Bluetooth, Bluetooth LE, ZigBee, etc.), wired networks (e.g., communication over Ethernet or InfiniBand), low power wide area networks (e.g., LoRaWAN, SigFox, etc.), and/or the Internet.
I/Oポート1612は、コンピューティング・デバイス1600が、I/Oコンポーネント1614、プレゼンテーション・コンポーネント1618、及び/又は他のコンポーネント(そのうちのいくつかは、コンピューティング・デバイス1600に組み込まれていても(例えば、統合されていても)よい)を含む他のデバイスに論理的に結合されることを可能にし得る。例示的なI/Oコンポーネント1614には、マイク、マウス、キーボード、ジョイスティック、ゲーム・パッド、ゲーム・コントローラ、衛星放送受信アンテナ、スキャナ、プリンタ、ワイヤレス・デバイスなどが含まれる。I/Oコンポーネント1614は、ユーザが生成したエア・ジェスチャ、声、又は他の生理学的入力を処理するナチュラル・ユーザ・インターフェース(NUI:Natural User Interface)を提供し得る。場合によっては、入力は、さらなる処理のために適切なネットワーク要素に送信され得る。NUIは、音声認識、スタイラス認識、顔認識、バイオメトリック認識、画面上と画面付近の両方のジェスチャ認識、エア・ジェスチャ、頭部及び目の追跡、並びにコンピューティング・デバイス1600のディスプレイに関連付けられたタッチ認識(以下により詳細に説明される)の任意の組み合わせを実装し得る。コンピューティング・デバイス1600には、ジェスチャ検出及び認識のために、立体カメラ・システム、赤外線カメラ・システム、RGBカメラ・システム、タッチ・スクリーン技術、及びこれらの組み合わせなどの深度カメラが含まれ得る。加えて、コンピューティング・デバイス1600には、動きの検出を可能にする加速度計又はジャイロスコープ(例えば、慣性測定ユニット(IMU:Inertia Measurement Unit)の一部として)が含まれ得る。いくつかの実例では、加速度計又はジャイロスコープの出力は、コンピューティング・デバイス1600によって使用されて、没入感のある拡張現実又は仮想現実をレンダリングすることができる。 The I/O ports 1612 may enable the computing device 1600 to be logically coupled to other devices, including I/O components 1614, presentation components 1618, and/or other components, some of which may be incorporated (e.g., integrated) into the computing device 1600. Exemplary I/O components 1614 include microphones, mice, keyboards, joysticks, game pads, game controllers, satellite dishes, scanners, printers, wireless devices, and the like. The I/O components 1614 may provide a Natural User Interface (NUI) that processes user-generated air gestures, voice, or other physiological input. In some cases, the input may be sent to an appropriate network element for further processing. The NUI may implement any combination of voice recognition, stylus recognition, facial recognition, biometric recognition, gesture recognition both on and near the screen, air gestures, head and eye tracking, and touch recognition associated with the display of the computing device 1600 (described in more detail below). The computing device 1600 may include a depth camera, such as a stereoscopic camera system, an infrared camera system, an RGB camera system, touch screen technology, and combinations thereof, for gesture detection and recognition. Additionally, the computing device 1600 may include an accelerometer or gyroscope (e.g., as part of an Inertia Measurement Unit (IMU)) that allows for detection of motion. In some instances, the output of the accelerometer or gyroscope may be used by the computing device 1600 to render an immersive augmented or virtual reality.
電源1616には、ハードワイヤード電源、バッテリ電源、又はこれらの組み合わせが含まれ得る。電源1616は、コンピューティング・デバイス1600のコンポーネントが動作することを可能にするために、コンピューティング・デバイス1600に給電し得る。 Power source 1616 may include a hardwired power source, a battery power source, or a combination thereof. Power source 1616 may provide power to computing device 1600 to enable the components of computing device 1600 to operate.
プレゼンテーション・コンポーネント1618には、ディスプレイ(例えば、モニタ、タッチ・スクリーン、テレビ画面、ヘッドアップ・ディスプレイ(HUD)、他のディスプレイ・タイプ、又はこれらの組み合わせ)、スピーカ、及び/又は他のプレゼンテーション・コンポーネントが含まれ得る。プレゼンテーション・コンポーネント1618は、他のコンポーネント(例えば、GPU1608、CPU1606など)からデータを受信し、データを(例えば、画像、ビデオ、サウンドなどとして)を出力し得る。 The presentation component 1618 may include a display (e.g., a monitor, a touch screen, a television screen, a heads-up display (HUD), other display types, or a combination thereof), speakers, and/or other presentation components. The presentation component 1618 may receive data from other components (e.g., GPU 1608, CPU 1606, etc.) and output data (e.g., as images, video, sound, etc.).
本開示は、コンピュータ、又はパーソナル・データ・アシスタント若しくは他のハンドヘルド・デバイスなどの他のマシンによって実行される、プログラム・モジュールなどのコンピュータ実行可能命令を含むコンピュータ・コード又はマシン使用可能命令の一般的なコンテキストで説明され得る。一般に、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれるプログラム・モジュールは、特定のタスクを実行する、又は特定の抽象データ型を実装するコードを指す。本開示は、ハンドヘルド・デバイス、家電製品、汎用コンピュータ、より専門的なコンピューティング・デバイスなどが含まれる様々なシステム構成で実施され得る。本開示はまた、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境で実施されてもよい。 The present 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 other machine, such as a personal data assistant or other handheld device. Generally, program modules, including routines, programs, objects, components, data structures, etc., refer to code that performs particular tasks or implements particular abstract data types. The present disclosure may be practiced in a variety of system configurations, including handheld devices, consumer electronics, general purpose computers, more specialized computing devices, and the like. The present disclosure may also be practiced in distributed computing environments where tasks are performed by remote processing devices linked through a communications network.
本開示の少なくとも1つの実施例について、次の条項を考慮して説明することができる。 At least one embodiment of the present disclosure can be described in view of the following provisions:
1.第1のリスク分類レベルに従って動作するメモリと、第1のリスク分類レベルよりも高いリスク分類を示す第2のリスク分類レベルに従って動作する回路であって、メモリ内の第1のメモリ・アドレスに書き込まれるデータのエラー検出コードを判断し、第1のメモリ・アドレスに少なくとも部分的に基づいてメモリ内の第2のメモリ・アドレスを判断し、データを第1のメモリ・アドレスに記憶させ、且つエラー検出コードを第2のメモリ・アドレスに記憶させる、回路と、を備える、システム。 1. A system comprising: a memory that operates according to a first risk classification level; and a circuit that operates according to a second risk classification level indicating a higher risk classification than the first risk classification level, the circuit determining an error detection code for data written to a first memory address in the memory, determining a second memory address in the memory based at least in part on the first memory address, storing the data at the first memory address, and storing the error detection code at the second memory address.
2.データが第1のメモリ・アドレスに記憶され、且つエラー検出コードが第2のメモリ・アドレスに記憶された後に、回路は、第1のメモリ・アドレスからデータを取得し、第2のメモリ・アドレスからエラー検出コードを取得し、第1のメモリ・アドレス及び第1のメモリ・アドレスから取得されたデータに基づいてチェック・コードを生成し、エラー検出コードがデータには少なくとも1つのエラーが含まれていることを示すときに通知を生成する、条項1に記載のシステム。 2. The system of claim 1, wherein after the data is stored at the first memory address and the error detection code is stored at the second memory address, the circuitry retrieves the data from the first memory address, retrieves the error detection code from the second memory address, generates a check code based on the first memory address and the data retrieved from the first memory address, and generates a notification when the error detection code indicates that the data contains at least one error.
3.エラー検出コードは、エラー検出コードがチェック・コードと一致しないときに、データには少なくとも1つのエラーが含まれていることを示す、条項2に記載のシステム。 3. The system of clause 2, wherein the error detection code indicates that the data contains at least one error when the error detection code does not match the check code.
4.回路は、第1のメモリ・アクセス中に第1のメモリ・アドレスからデータを取得し、第2のメモリ・アクセス中に第2のメモリ・アドレスからエラー検出コードを取得する、条項2又は3に記載のシステム。 4. The system of clause 2 or 3, wherein the circuitry obtains data from the first memory address during the first memory access and obtains the error detection code from the second memory address during the second memory access.
5.第1のインターフェースであって、データは第1のインターフェースを介して第1のメモリ・アドレスから取得される、第1のインターフェースと、第2のインターフェースであって、エラー検出コードは、第1のインターフェースがデータを取得することと並行して、第2のインターフェースを介して第2のメモリ・アドレスから取得され、第1のインターフェースは、第2のインターフェースとは異なる、第2のインターフェースと、をさらに備える、条項2から4までのいずれか1つに記載のシステム。 5. The system of any one of clauses 2 to 4, further comprising: a first interface, where data is obtained from a first memory address via the first interface; and a second interface, where an error detection code is obtained from a second memory address via the second interface in parallel with the first interface obtaining the data, the first interface being different from the second interface.
6.回路は、第1のメモリ・アクセスと第2のメモリ・アクセスとの間に時間遅延を発生させる、条項4に記載のシステム。 6. The system of claim 4, wherein the circuitry generates a time delay between the first memory access and the second memory access.
7.メモリは、第1のサブセクション及び第2のサブセクションを含み、第1のサブセクションは、第1のメモリ・アドレスを含み、第2のサブセクションは、第2のメモリ・アドレスを含み、回路は、ブート手順中に第2のサブセクションにおける各メモリ・アドレスに新しいエラー検出コードを書き込む、条項1から6までのいずれか1つに記載のシステム。 7. The system of any one of clauses 1 to 6, wherein the memory includes a first subsection and a second subsection, the first subsection includes a first memory address, and the second subsection includes a second memory address, and the circuitry writes a new error detection code to each memory address in the second subsection during a boot procedure.
8.回路は、データが第1のメモリ・アドレスに書き込まれる前に、第1のメモリ・アドレス及びデータに基づいて、エラー検出コードを判断する、条項1から7までのいずれか1つに記載のシステム。 8. The system of any one of clauses 1 to 7, wherein the circuitry determines an error detection code based on the first memory address and the data before the data is written to the first memory address.
9.回路は、第1のブロック及び第2のブロックを含み、第1のブロックは、データ及び第1のメモリ・アドレスを含む書き込み要求を第2のブロックに送信し、第2のブロックは、書き込み要求を受信し、エラー検出コードを判断し、第2のメモリ・アドレスを判断し、データを第1のメモリ・アドレスに記憶させ、且つエラー検出コードを第2のメモリ・アドレスに記憶させる、条項1から8までのいずれか1つに記載のシステム。 9. The system of any one of clauses 1 to 8, wherein the circuit includes a first block and a second block, the first block sends a write request including data and a first memory address to the second block, and the second block receives the write request, determines an error detection code, determines a second memory address, stores the data at the first memory address, and stores the error detection code at the second memory address.
10.第1のブロックは、第1のブロックが書き込み要求を第2のブロックに送信したときに開始する書き込みタイマを含み、第1のブロックは、書き込みタイマが、第1のブロックがメモリから応答を受信するまでに所定の時間を超えて経過したことを示すときに、書き込みエラーを生成する、条項9に記載のシステム。 10. The system of claim 9, wherein the first block includes a write timer that starts when the first block sends a write request to the second block, and the first block generates a write error when the write timer indicates that more than a predetermined time has elapsed before the first block receives a response from the memory.
11.第1のブロックが書き込み要求を送った後に、第1のブロックは、第1のメモリ・アドレスに記憶されているデータについての読み取り要求を第2のブロックに送り、第2のブロックは、読み取り要求を受信し、第1のメモリ・アドレスからデータを取得し、第2のメモリ・アドレスからエラー検出コードを取得し、第2のブロックがエラー検出コードはデータには少なくとも1つのエラーが含まれていることを示すと判断するときに、通知を第1のブロックに送信する、条項9又は10に記載のシステム。 11. The system of clause 9 or 10, wherein after the first block sends the write request, the first block sends a read request to the second block for the data stored at the first memory address, the second block receives the read request, retrieves the data from the first memory address, retrieves the error detection code from the second memory address, and sends a notification to the first block when the second block determines that the error detection code indicates that the data contains at least one error.
12.第1のブロックは、第1のブロックが読み取り要求を送ったときに開始する読み取りタイマを含み、第1のブロックは、読み取りタイマが、第1のブロックがデータを受信するまでに所定の時間を超えて経過したことを示すときに、読み取りエラーを生成する、条項11に記載のシステム。 12. The system of claim 11, wherein the first block includes a read timer that starts when the first block sends a read request, and the first block generates a read error when the read timer indicates that more than a predetermined time has elapsed before the first block receives data.
13.回路は、第1のメモリ・アクセス中に第1のメモリ・アドレスにデータを記憶させ、第2のメモリ・アクセス中に第2のメモリ・アドレスにエラー検出コードを記憶させる、条項1から12までのいずれか1つに記載のシステム。 13. The system of any one of clauses 1 to 12, wherein the circuitry stores data at a first memory address during a first memory access and stores an error detection code at a second memory address during a second memory access.
14.回路は、第1のメモリ・アクセスと第2のメモリ・アクセスとの間に第1の時間遅延を発生させる、条項13に記載のシステム。 14. The system of claim 13, wherein the circuitry generates a first time delay between the first memory access and the second memory access.
15.連続する半導体材料上に存在している、条項1から14までのいずれか1つに記載のシステム。 15. The system of any one of clauses 1 to 14, wherein the system is on a continuous semiconductor material.
16.自動車車両に対応するシステム・オン・チップ(「SoC」)の一部分を実装している、条項15に記載のシステム。 16. The system of clause 15, implementing a portion of a system-on-chip ("SoC") for an automotive vehicle.
17.第1のリスク分類レベル及び第2のリスク分類レベルは、各々、自動車安全水準(「ASIL」)である、条項1から16までのいずれか1つに記載のシステム。 17. The system of any one of clauses 1 to 16, wherein the first risk classification level and the second risk classification level are each an Automotive Safety Indicator Level ("ASIL").
18.エラー検出コードは、周期的冗長検査コード又はエラー訂正コードである、条項1から17までのいずれか1つに記載のシステム。 18. The system of any one of clauses 1 to 17, wherein the error detection code is a cyclic redundancy check code or an error correction code.
19.第1のリスク分類レベル内で動作するメモリであって、データを記憶する第1のメモリ・アドレス及びエラー検出コードを記憶する第2のメモリ・アドレスを含む分離されたメモリ領域を含む、メモリと、第1のリスク分類レベルよりも高いレベルのリスクを示す第2のリスク分類レベル内で動作する回路であって、第1のメモリ・アドレスからデータを取得し、第2のメモリ・アドレスからエラー検出コードを取得し、エラー検出コードがデータには少なくとも1つのエラーが含まれていることを示すときに通知を生成する、回路と、を備える、システム。 19. A system comprising: a memory operating within a first risk classification level, the memory including a separated memory region including a first memory address for storing data and a second memory address for storing an error detection code; and a circuit operating within a second risk classification level indicating a higher level of risk than the first risk classification level, the circuit retrieving the data from the first memory address, retrieving the error detection code from the second memory address, and generating a notification when the error detection code indicates that the data contains at least one error.
20.回路は、第1のメモリ・アドレス及び第1のメモリ・アドレスから取得されたデータに基づいてチェック・コードを生成し、エラー検出コードがチェック・コードと一致しないときに、エラー検出コードはデータには少なくとも1つのエラーが含まれていることを示す、条項19に記載のシステム。 20. The system of claim 19, wherein the circuit generates a check code based on the first memory address and the data retrieved from the first memory address, and when the error detection code does not match the check code, the error detection code indicates that the data contains at least one error.
21.回路は、第1のブロック及び第2のブロックを含み、第1のブロックは、第1のメモリ・アドレスに記憶されているデータについての読み取り要求を第2のブロックに送り、第2のブロックは、読み取り要求を受信し、データを取得し、エラー検出コードを取得し、エラー検出コードがデータには少なくとも1つのエラーが含まれていることを示すときに通知を生成する、条項19又は20に記載のシステム。 21. The system of clause 19 or 20, wherein the circuit includes a first block and a second block, the first block sends a read request to the second block for data stored at a first memory address, and the second block receives the read request, retrieves the data, retrieves the error detection code, and generates a notification when the error detection code indicates that the data contains at least one error.
22.第1のブロックは、第1のブロックが読み取り要求を送ったときに開始する読み取りタイマを含み、第1のブロックは、読み取りタイマが、第1のブロックがデータを受信するまでに所定の時間を超えて経過したことを示すときに、エラーを生成する、条項21に記載のシステム。 22. The system of claim 21, wherein the first block includes a read timer that starts when the first block sends a read request, and the first block generates an error when the read timer indicates that more than a predetermined time has elapsed before the first block receives data.
23.第1のブロックが読み取り要求を送る前に、第1のブロックは、データ及び第1のメモリ・アドレスを第2のブロックに送信し、第2のブロックは、エラー検出コードを判断し、第2のメモリ・アドレスを判断し、データを第1のメモリ・アドレスに記憶させ、且つエラー検出コードを第2のメモリ・アドレスに記憶させる、条項21又は22に記載のシステム。 23. The system of clause 21 or 22, wherein before the first block sends the read request, the first block sends the data and the first memory address to the second block, and the second block determines the error detection code, determines the second memory address, stores the data at the first memory address, and stores the error detection code at the second memory address.
24.第1のブロックは、第1のブロックがデータ及び第1のメモリ・アドレスを第2のブロックに送信したときに開始する書き込みタイマを含み、第1のブロックは、書き込みタイマが、第1のブロックがメモリから応答を受信するまでに第1の所定の時間を超えて経過したことを示すときに、書き込みエラーを生成する、条項23に記載のシステム。 24. The system of claim 23, wherein the first block includes a write timer that starts when the first block transmits data and the first memory address to the second block, and the first block generates a write error when the write timer indicates that more than a first predetermined time has elapsed before the first block receives a response from the memory.
25.第1のブロックは、第1のブロックが読み取り要求を送ったときに開始する読み取りタイマを含み、第1のブロックは、読み取りタイマが、第1のブロックがメモリからデータを受信するまでに第2の所定の時間を超えて経過したことを示すときに、読み取りエラーを生成する、条項24に記載のシステム。 25. The system of claim 24, wherein the first block includes a read timer that starts when the first block sends a read request, and the first block generates a read error when the read timer indicates that more than a second predetermined time has elapsed before the first block receives data from the memory.
26.回路は、第1のメモリ・アクセス中に第1のメモリ・アドレスからデータを取得し、第2のメモリ・アクセス中に第2のメモリ・アドレスからエラー検出コードを取得する、条項19から25までのいずれか1つに記載のシステム。 26. The system of any one of clauses 19 to 25, wherein the circuitry retrieves data from the first memory address during the first memory access and retrieves the error detection code from the second memory address during the second memory access.
27.回路は、第1のメモリ・アクセスと第2のメモリ・アクセスとの間に時間遅延を発生させる、条項26に記載のシステム。 27. The system of claim 26, wherein the circuitry generates a time delay between the first memory access and the second memory access.
28.回路は、ブート手順中に第2のメモリ・アドレスにエラー検出コードを書き込んだ、条項19から27までのいずれか1つに記載のシステム。 28. The system of any one of clauses 19 to 27, wherein the circuit writes an error detection code to the second memory address during the boot procedure.
29.連続する半導体材料上に存在している、条項19から28までのいずれか1つに記載のシステム。 29. The system of any one of clauses 19 to 28, wherein the system is on a continuous semiconductor material.
30.自動車車両に対応するシステム・オン・チップ(「SoC」)の一部分を実装している、条項29に記載のシステム。 30. The system of clause 29, implementing a portion of a system-on-chip ("SoC") for an automotive vehicle.
31.第1のリスク分類レベル及び第2のリスク分類レベルは、各々、自動車安全水準(「ASIL」)である、条項19から30までのいずれか1つに記載のシステム。 31. The system of any one of clauses 19 to 30, wherein the first risk classification level and the second risk classification level are each an Automotive Safety Indicator Level ("ASIL").
32.エラー検出コードは、周期的冗長検査コード又はエラー訂正コードである、条項19から31までのいずれか1つに記載のシステム。 32. The system of any one of clauses 19 to 31, wherein the error detection code is a cyclic redundancy check code or an error correction code.
33.第1のリスク分類レベルで動作する回路によって実行される方法であって、第1のリスク分類レベルよりも低いレベルのリスクを示す第2のリスク分類レベルで動作するメモリ内の第1のメモリ・アドレスに書き込むデータのエラー検出コードを判断することと、第1のメモリ・アドレスに少なくとも部分的に基づいて、メモリ内の第2のメモリ・アドレスを判断することと、データを第1のメモリ・アドレスに記憶させ、且つエラー検出コードを第2のメモリ・アドレスに記憶させることと、を含む、方法。 33. A method performed by a circuit operating at a first risk classification level, the method including: determining an error detection code for data to be written to a first memory address in a memory operating at a second risk classification level indicating a lower level of risk than the first risk classification level; determining a second memory address in the memory based at least in part on the first memory address; and storing the data at the first memory address and the error detection code at the second memory address.
34.データが第1のメモリ・アドレスに記憶された後に、第1のメモリ・アドレスからデータを取得することと、エラー検出コードが第2のメモリ・アドレスに記憶された後に、第2のメモリ・アドレスからエラー検出コードを取得することと、第1のメモリ・アドレス及び第1のメモリ・アドレスから取得されたデータに基づいてチェック・コードを生成することと、チェック・コードがデータには少なくとも1つのエラーが含まれていることを示すときに通知を生成することと、をさらに含む、条項33に記載の方法。 34. The method of claim 33, further comprising: retrieving data from the first memory address after the data is stored in the first memory address; retrieving an error detection code from the second memory address after the error detection code is stored in the second memory address; generating a check code based on the first memory address and the data retrieved from the first memory address; and generating a notification when the check code indicates that the data contains at least one error.
35.エラー検出コードは、データが第1のメモリ・アドレスに記憶される前に、第1のメモリ・アドレス及びデータに基づいて生成され、チェック・コードは、チェック・コードがエラー検出コードと一致しないときに、データには少なくとも1つのエラーが含まれていることを示す、条項34に記載の方法。 35. The method of claim 34, wherein an error detection code is generated based on the first memory address and the data before the data is stored at the first memory address, and the check code indicates that the data contains at least one error when the check code does not match the error detection code.
36.メモリは、第1のサブセクション及び第2のサブセクションを含み、第1のサブセクションは、第1のメモリ・アドレスを含み、第2のサブセクションは、第2のメモリ・アドレスを含み、方法は、ブート手順中に第2のサブセクションにおける各メモリ・アドレスに新しいエラー検出コードを書き込むことをさらに含む、条項33から35までのいずれか1つに記載の方法。 36. The method of any one of clauses 33 to 35, wherein the memory includes a first subsection and a second subsection, the first subsection including a first memory address and the second subsection including a second memory address, the method further including writing a new error detection code to each memory address in the second subsection during the boot procedure.
37.第1のリスク分類レベルで動作する回路によって実行される方法であって、第1のリスク分類レベルよりも低いレベルのリスクを示す第2のリスク分類レベルで動作するメモリの第1のメモリ・アドレスからデータを取得することと、第1のメモリ・アドレスに少なくとも部分的に基づいて、メモリ内の第2のメモリ・アドレスを判断することと、第2のメモリ・アドレスからエラー検出コードを取得することと、エラー検出コードがデータには少なくとも1つのエラーが含まれていることを示すときに通知を生成することと、を含む、方法。 37. A method performed by a circuit operating at a first risk classification level, the method including: obtaining data from a first memory address of a memory operating at a second risk classification level indicating a lower level of risk than the first risk classification level; determining a second memory address in 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 when the error detection code indicates that the data contains at least one error.
38.第1のメモリ・アドレス及び第1のメモリ・アドレスから取得されたデータに基づいてチェック・コードを生成することと、チェック・コードがエラー検出コードと一致するかどうかを判断することであって、エラー検出コードは、エラー検出コードがチェック・コードと一致しないときにデータには少なくとも1つのエラーが含まれていることを示す、判断することと、をさらに含む、条項37に記載の方法。 38. The method of clause 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 an error detection code, the error detection code indicating that the data contains at least one error when the error detection code does not match the check code.
39.回路は、第1のメモリ・アクセス中に第1のメモリ・アドレスからデータを取得し、回路は、第2のメモリ・アクセス中に第2のメモリ・アドレスからエラー検出コードを取得し、方法は、第1のメモリ・アクセスと第2のメモリ・アクセスとの間に時間遅延を発生させることをさらに含む、条項37又は38に記載の方法。 39. The method of claim 37 or 38, wherein the circuitry obtains data from the first memory address during the first memory access, and the circuitry obtains the error detection code from the second memory address during the second memory access, and the method further includes creating a time delay between the first memory access and the second memory access.
40.回路は、第1のブロック及び第2のブロックを含み、方法は、第1のブロックによって、第1のメモリ・アドレスに記憶されているデータについての読み取り要求を第2のブロックに送ることと、第2のブロックによって、読み取り要求を受信することであって、第2のブロックは、データを取得し、エラー検出コードを取得し、エラー検出コードがデータには少なくとも1つのエラーが含まれていることを示すときに通知を生成する、受信することと、をさらに含む、条項37から39までのいずれか1つに記載の方法。 40. The method of any one of clauses 37 to 39, wherein the circuit includes a first block and a second block, and the method further includes sending, by the first block, a read request to the second block for data stored at the first memory address, and receiving, by the second block, the read request, the second block obtaining the data, obtaining an error detection code, and generating a notification when the error detection code indicates that the data contains at least one error.
41.第1のブロックが読み取り要求を送ったときに読み取りタイマが開始し、方法は、読み取りタイマが、第1のブロックがデータを受信するまでに所定の時間を超えて経過したことを示すときに、第1のブロックによって、読み取りエラーを生成することをさらに含む、条項40に記載の方法。 41. The method of claim 40, wherein a read timer is started when the first block sends a read request, the method further including generating a read error by the first block when the read timer indicates that more than a predetermined time has elapsed before the first block receives data.
42.第1のブロックが読み取り要求を送る前に、第1のブロックによって、書き込み要求を第2のブロックに送信することであって、書き込み要求はデータ及び第1のメモリ・アドレスを含む、送信することと、第1のブロックが読み取り要求を送る前に、第2のブロックによってエラー検出コードを判断することと、第1のブロックが読み取り要求を送る前に、第2のブロックによって第2のメモリ・アドレスを判断することと、第1のブロックが読み取り要求を送る前に、第2のブロックによって、データを第1のメモリ・アドレスに記憶させ、且つエラー検出コードを第2のメモリに記憶させることと、をさらに含む、条項40又は41に記載の方法。 42. The method of clause 40 or 41, further comprising: sending a write request by the first block to the second block before the first block sends the read request, the write request including data and the first memory address; determining an error detection code by the second block before the first block sends the read request; determining a second memory address by the second block before the first block sends the read request; and storing the data at the first memory address and the error detection code in the second memory by the second block before the first block sends the read request.
43.第1のブロックが書き込み要求を送ったときに書き込みタイマが開始し、方法は、書き込みタイマが、第1のブロックがメモリから応答を受信するまでに第1の所定の時間を超えて経過したことを示すときに、第1のブロックによって、書き込みエラーを生成することをさらに含む、条項42に記載の方法。 43. The method of claim 42, wherein a write timer is started when the first block sends a write request, the method further including generating a write error by the first block when the write timer indicates that more than a first predetermined time has elapsed before the first block receives a response from the memory.
44.第1のブロックが読み取り要求を送ったときに読み取りタイマが開始し、方法は、読み取りタイマが、第1のブロックがデータを受信するまでに第2の所定の時間を超えて経過したことを示すときに、第1のブロックによって、読み取りエラーを生成することをさらに含む、条項43に記載の方法。 44. The method of claim 43, wherein a read timer is started when the first block sends a read request, the method further including generating a read error by the first block when the read timer indicates that more than a second predetermined time has elapsed before the first block receives the data.
45.第2のブロックは、第1のメモリ・アクセス中に第1のメモリ・アドレスにデータを記憶させ、第2のブロックは、第2のメモリ・アクセス中に第2のメモリ・アドレスにエラー検出コードを記憶させ、方法は、第1のメモリ・アクセスと第2のメモリ・アクセスとの間に時間遅延を発生させることをさらに含む、条項42から44までのいずれか1つに記載の方法。 45. The method of any one of clauses 42 to 44, wherein the second block stores data at the first memory address during the first memory access and the second block stores an error detection code at the second memory address during the second memory access, the method further comprising creating a time delay between the first memory access and the second memory access.
46.ブート手順中に第2のメモリ・アドレスにエラー検出コードを書き込むことをさらに含む、条項37から45までのいずれか1つに記載の方法。 46. The method of any one of clauses 37 to 45, further comprising writing an error detection code to the second memory address during the boot procedure.
47.第1のリスク分類レベル及び第2のリスク分類レベルは、各々、自動車安全水準(「ASIL」)である、条項37から46までのいずれか1つに記載の方法。 47. The method of any one of clauses 37 to 46, wherein the first risk classification level and the second risk classification level are each an Automotive Safety Indicator Level ("ASIL").
48.エラー検出コードは、周期的冗長検査コード又はエラー訂正コードである、条項37から47までのいずれか1つに記載の方法。 48. The method of any one of clauses 37 to 47, wherein the error detection code is a cyclic redundancy check code or an error correction code.
開示された実施例を説明するコンテキストにおける(特に、次の特許請求の範囲のコンテキストにおける)「a」及び「an」及び「the」という用語及び同様の参照の使用は、本明細書に特に明記されていない限り、又はコンテキストによって明確に矛盾する場合を除き、用語の定義としてではなく、単数形及び複数形の両方を対象とするように解釈されるべきである。「備える(comprising)」、「有する(having)」、「含む(including)」、及び「包含する(containing)」という用語は、特に明記されていない限り、非限定的用語(「~が含まれるが、これに限定されない」を意味する)と解釈されるものとする。「接続された(connected)」という用語は、修飾されておらず、物理的な接続を指す場合、何かが介在していたとしても、部分的に又は全体的に中に含まれる、取り付けられる、又は一緒に結合されると解釈されるべきである。本明細書における値の範囲の記載は、本明細書に特に明記されていない限り、範囲内の別個の各値を個別に参照する簡単な方法であることを単に意図するものであり、別個の各値は、本明細書で個別に記載されたかのように本明細書に組み込まれる。少なくとも1つの実施例では、「セット」又は「サブセット」という用語の使用(例えば、「アイテムのセット」)は、特に明記されていない限り、又はコンテキストによって矛盾する場合を除き、1つ又は複数のメンバーを含む空ではないコレクションと解釈されるべきである。さらに、特に明記されていない限り、又はコンテキストによって明確に矛盾する場合を除き、対応するセットの「サブセット」という用語は、対応するセットの適切なサブセットを示すとは限らず、サブセットと対応するセットとは等しくてもよい。 The use of the terms "a" and "an" and "the" and similar references in the context of describing the disclosed embodiments (particularly in the context of the following claims) should be construed to cover both the singular and the plural, and not as a definition of the terms, unless otherwise specified herein or clearly contradicted by context. The terms "comprising," "having," "including," and "containing" are to be construed as open-ended terms (meaning "including, but not limited to"), unless otherwise specified. The term "connected," when unmodified and referring to a physical connection, should be construed as being partially or wholly contained within, attached to, or joined together, even if there is something intervening. The description of ranges of values herein is merely intended as a shorthand method of individually referring to each separate value in the range, unless otherwise stated herein, and each separate value is incorporated herein as if it were individually stated herein. In at least one embodiment, use of the term "set" or "subset" (e.g., "set of items") should be construed as a non-empty collection containing one or more members, unless otherwise stated or otherwise contradicted by context. Furthermore, unless otherwise stated or otherwise clearly contradicted by context, the term "subset" of a corresponding set does not necessarily indicate a proper subset of the corresponding set, and a subset and a corresponding set may be equivalent.
本明細書で使用される場合、2つ以上の要素に関する「及び/又は」の記載は、1つの要素のみ、又は要素の組み合わせを意味すると解釈されるべきである。例えば、「要素A、要素B、及び/又は要素C」には、要素Aのみ、要素Bのみ、要素Cのみ、要素A及び要素B、要素A及び要素C、要素B及び要素C、又は要素A、B、及びCが含まれ得る。 As used herein, the term "and/or" with respect to two or more elements should be construed to mean only one element or a combination of elements. For example, "element A, element B, and/or element C" may include element A only, element B only, element C only, elements A and element B, elements A and element C, elements B and element C, or elements A, B, and C.
「A、B、及びCのうちの少なくとも1つ(at least one of A,B,and C)」又は「A、B及びCのうちの少なくとも1つ(at least one of A,B and C)」の形式の語句などの接続的な言語は、具体的に別段に述べられていない限り、又はコンテキストによって明確に矛盾する場合を除き、項目、用語などが、現在まで一般的に使用されるコンテキストで、A若しくはB若しくはCのいずれか、又はA及びB及びCのセットの任意の空ではないサブセットであり得ると理解される。例えば、3つのメンバーを有するセットの例示的な例では、「A、B、及びCのうちの少なくとも1つ」及び「A、B及びCのうちの少なくとも1つ」という接続的な語句は、次のセット、即ち、{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}のうちのいずれかを指す。したがって、このような接続的な言語は、特定の実施例に、Aのうちの少なくとも1つ、Bのうちの少なくとも1つ、及びCのうちの少なくとも1つが存在することが必要であることを意味することを意図したものではない。また、特に明記されていない限り、又はコンテキストによって矛盾する場合を除き、「複数」という用語は、複数の状態を示す(例えば、「複数の項目」は多数の項目を示す)。少なくとも1つの実施例では、複数における項目の数は、少なくとも2であるが、明示的に又はコンテキストによって示された場合は、より多くてもよい。さらに、特に明記されていない限り、又はコンテキストから明らかである場合を除き、「~に基づく(based on)」という語句は、「少なくとも部分的に基づく(based at least in part on)」を意味し、「~のみに基づく(based solely on)」を意味するものではない。 Conjunctive 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 understood to mean that, unless specifically stated otherwise or clearly contradicted by context, the item, term, etc., in the context in which it is commonly used to date, may be either A or B or C, or any non-empty subset of the set A and B and C. For example, in the illustrative example of a set having three members, the conjunctive 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 conjunctive language is not intended to imply that at least one of A, at least one of B, and at least one of C are required to be present in a particular embodiment. Additionally, unless otherwise specified or contradicted by context, the term "plurality" refers to a plurality (e.g., "plurality of items" refers to a number of items). In at least one embodiment, the number of items in a plurality is at least two, but may be more if indicated explicitly or by context. Additionally, unless otherwise specified or clear from context, the phrase "based on" means "based at least in part on" and not "based solely on."
本明細書に説明するプロセスの操作は、本明細書に特に明記されていない限り、又はコンテキストによって明確に矛盾する場合を除き、任意の適切な順序で実行され得る。少なくとも1つの実施例では、本明細書に説明するプロセス(又はその変形形態及び/又は組み合わせ)などのプロセスは、実行可能な命令で構成された1つ又は複数のコンピュータ・システムの制御下で実行され、ハードウェア又はその組み合わせによって、1つ又は複数のプロセッサ上で集合的に実行されるコード(例えば、実行可能命令、1つ若しくは複数のコンピュータ・プログラム、又は1つ若しくは複数のアプリケーション)として実装される。少なくとも1つの実施例では、コードはコンピュータ可読記憶媒体に記憶される。少なくとも1つの実施例では、1つ又は複数のプロセッサによって実行可能な複数の命令を含むコンピュータ・プログラムの形式で記憶される。少なくとも1つの実施例では、コンピュータ可読記憶媒体は、一時的な信号(例えば、伝播する過渡的な電気又は電磁伝送)を除外するが、一時的な信号のトランシーバ内の非一時的なデータ・ストレージ回路(例えば、バッファ、キャッシュ、及びキュー)を含む、非一時的なコンピュータ可読記憶媒体である。少なくとも1つの実施例では、コード(例えば、実行可能コード又はソース・コード)は、実行可能命令が記憶された1つ又は複数の非一時的コンピュータ可読記憶媒体(又は実行可能命令を記憶する他のメモリ)のセットに記憶される。実行可能命令は、コンピュータ・システムの1つ又は複数のプロセッサによって実行されると(即ち、実行された結果として)、コンピュータ・システムに本明細書で説明する操作を実行させる。少なくとも1つの実施例では、非一時的コンピュータ可読記憶媒体のセットは、複数の非一時的コンピュータ可読記憶媒体を含み、複数の非一時的コンピュータ可読記憶媒体の個々の非一時的記憶媒体のうちの1つ又は複数にはすべてのコードはないが、複数の非一時的コンピュータ可読記憶媒体は集合的にすべてのコードを記憶する。少なくとも1つの実施例では、異なる命令が異なるプロセッサによって実行されるように実行可能命令が実行される。少なくとも1つの実施例では、非一時的コンピュータ可読記憶媒体が命令を記憶し、メインの中央処理ユニット(「CPU」)が命令のうちのいくつかを実行し、グラフィックス処理ユニット(「GPU」)が他の命令を実行する。少なくとも1つの実施例では、コンピュータ・システムの異なるコンポーネントが別個のプロセッサを有し、異なるプロセッサが異なる命令のサブセットを実行する。 The operations of the processes described herein may be performed in any suitable order unless otherwise indicated herein or clearly contradicted by context. In at least one embodiment, processes such as the processes described herein (or variations and/or combinations thereof) are performed under the control of one or more computer systems configured with executable instructions and implemented by hardware or a combination thereof as code (e.g., executable instructions, one or more computer programs, or one or more applications) that collectively execute on one or more processors. In at least one embodiment, the code is stored on a computer-readable storage medium. In at least one embodiment, the code is stored in the form of a computer program that includes a plurality of instructions executable by one or more processors. In at least one embodiment, the computer-readable storage medium is a non-transitory computer-readable storage medium that excludes transitory signals (e.g., propagating transient electrical or electromagnetic transmissions), but includes non-transitory data storage circuitry (e.g., buffers, caches, and queues) in a transceiver of the transitory signal. In at least one embodiment, code (e.g., executable code or source code) is stored in a set of one or more non-transitory computer readable storage media (or other memory that stores executable instructions) on which executable instructions are stored. The executable instructions, when executed (i.e., as a result of being executed) by one or more processors of a computer system, cause the computer system to perform the operations described herein. In at least one embodiment, the set of non-transitory computer readable storage media includes multiple non-transitory computer readable storage media, where one or more of the individual non-transitory storage media of the multiple non-transitory computer readable storage media do not have all the code, but the multiple non-transitory computer readable storage media collectively store all 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, the non-transitory computer readable storage media store the instructions, a main central processing unit ("CPU") executes some of the instructions, and a graphics processing unit ("GPU") executes other instructions. In at least one embodiment, different components of a computer system have separate processors, and the different processors execute different subsets of instructions.
したがって、少なくとも1つの実施例では、コンピュータ・システムは、本明細書に説明するプロセスの操作を単独で又は集合的に実行する1つ又は複数のサービスを実装するように構成され、そのようなコンピュータ・システムは、操作の実行を可能にする適切なハードウェア及び/又はソフトウェアで構成される。さらに、本開示の少なくとも1つの実施例を実装するコンピュータ・システムは、単一のデバイスであり、また、別の実施例では、分散コンピュータ・システムが本明細書で説明される操作を実行し、単一のデバイスですべての操作を実行しないように、異なって動作する複数のデバイスを含む分散コンピュータ・システムである。 Thus, in at least one embodiment, a computer system is configured to implement one or more services that, singly or collectively, perform the operations of the processes described herein, and such a computer system is configured with appropriate hardware and/or software to enable the operations to be performed. Furthermore, a computer system that implements at least one embodiment of the present disclosure is a single device, and in another embodiment, is a distributed computer system that includes multiple devices that operate differently such that the distributed computer system performs the operations described herein and does not perform all the operations on a single device.
本明細書に提供される任意及びすべての実例又は例示的な言語(例えば、「など」)の使用は、単に本開示の実施例をより適切に示すことを意図したものであり、特に主張されていない限り、本開示の範囲に限定を課すものではない。本明細書における言語は、請求項に係わらない任意の要素が、本開示の実践に不可欠であることを示していると解釈されるべきではない。 The use of any and all illustrative or exemplary language (e.g., "etc.") provided herein is intended merely to better illustrate examples of the disclosure and does not impose limitations on the scope of the disclosure unless specifically claimed. No language in the specification should be construed as indicating any non-claimed element as essential to the practice of the disclosure.
本明細書に引用されている出版物、特許出願、及び特許を含むすべての参照資料は、各参照資料が個別に且つ具体的に、参照により組み込まれることが示され、本明細書にその全体が記載されているのと同じ程度まで参照により本明細書に組み込まれる。 All references cited in this specification, including publications, patent applications, and patents, are hereby incorporated by reference to the same extent as if each reference was individually and specifically indicated to be incorporated by reference and was set forth in its entirety herein.
説明及び特許請求の範囲では、「結合された(coupled)」及び「接続された(connected)」という用語がその派生語とともに使用され得る。これらの用語は、相互の同義語として意図されていない場合があることが理解されるべきである。むしろ、特定の実例では、「接続された」又は「結合された」は、2つ以上の要素が相互に直接又は間接的に物理的又は電気的に接触していることを示すために使用され得る。「結合された」とは、2つ以上の要素が相互に直接接触していないが、相互に協働又は対話することを意味する場合もある。 In the description and claims, the terms "coupled" and "connected," along with their derivatives, may be used. It should be understood that these terms may not be intended as synonyms for each other. Rather, in certain instances, "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 still cooperate or interact with each other.
特に明記されていない限り、明細書全体を通して、「処理」、「コンピューティング」、「計算」、「判定」などの用語は、コンピュータ若しくはコンピューティング・システム、又は同様の電子コンピューティング・デバイスのアクション及び/又はプロセスを指していることを理解できるであろう。該アクション及び/又はプロセスは、コンピューティング・システムのレジスタ及び/又はメモリ内の物理量(例えば、電子量)として表されるデータを操作し、且つ/或いは、こうしたデータをコンピューティング・システムのメモリ、レジスタ、又は他のそのような情報ストレージ、伝送又は表示デバイス内の物理量として同様に表される他のデータに変換する。 Unless otherwise indicated, it will be understood that throughout the specification, terms such as "processing," "computing," "calculating," "determining," and the like refer to actions and/or processes of a computer or computing system or similar electronic computing device that manipulate data represented as physical quantities (e.g., electronic quantities) in registers and/or memory of the computing system and/or transform such data into other data similarly represented as physical quantities in the memory, registers, or other such information storage, transmission, or display device of the computing system.
同様に、「プロセッサ」という用語は、レジスタ及び/又はメモリからの電子データを処理し、その電子データをレジスタ及び/又はメモリに記憶され得る他の電子データに変換する任意のデバイス又はデバイスの一部分を指し得る。非限定的な例として、「プロセッサ」はCPU又はGPUであり得る。「コンピューティング・プラットフォーム」は、1つ又は複数のプロセッサを備え得る。本明細書で使用される場合、「ソフトウェア」プロセスには、少なくとも1つの実施例では、タスク、スレッド、及びインテリジェント・エージェントなど、時間の経過とともに作業を実行するソフトウェア・エンティティ及び/又はハードウェア・エンティティが含まれ得る。また、各プロセスは、命令を順次又は並列に、連続的又は断続的に実行するための、複数のプロセスを指している場合がある。「システム」及び「方法」という用語は、システムが1つ又は複数の方法を具体化することができ、方法がシステムと見なされ得る限りにおいて、本明細書では相互に交換可能に使用される。 Similarly, the term "processor" may refer to any device or portion of a device that processes electronic data from registers and/or memory and converts the electronic data into other electronic data that may be stored in registers and/or memory. As a non-limiting example, a "processor" may be a CPU or a GPU. A "computing platform" may comprise one or more processors. As used herein, a "software" process may include, in at least one embodiment, software and/or hardware entities that perform work over time, such as tasks, threads, and intelligent agents. Also, each process may refer to multiple processes for executing instructions sequentially or in parallel, continuously or intermittently. The terms "system" and "method" are used interchangeably herein to the extent that a system may embody one or more methods and a method may be considered a system.
少なくとも1つの実施例では、算術論理演算ユニットは、結果を生成するために1つ又は複数の入力を取る組み合わせ論理回路のセットである。少なくとも1つの実施例では、算術論理演算ユニットはプロセッサによって使用されて、加算、減算、又は乗算などの数学操作が実装される。少なくとも1つの実施例では、算術論理演算ユニットを使用して論理AND/OR又はXORなどの論理操作が実装される。少なくとも1つの実施例では、算術論理演算ユニットはステートレスであり、論理ゲートを形成するように配置された半導体トランジスタなどの物理的なスイッチング・コンポーネントから作られている。少なくとも1つの実施例では、算術論理演算ユニットは、関連クロックを有するステートフル論理回路として内部的に動作し得る。少なくとも1つの実施例では、算術論理演算ユニットは、内部ステートが関連するレジスタ・セットで維持されない非同期論理回路として構築され得る。少なくとも1つの実施例では、算術論理演算ユニットはプロセッサによって使用されて、プロセッサの1つ又は複数のレジスタに格納されたオペランドを結合して、プロセッサによって別のレジスタ又はメモリ位置に記憶できる出力を生成する。 In at least one embodiment, the arithmetic logic unit is a set of combinatorial logic circuits that takes one or more inputs to generate a result. In at least one embodiment, the arithmetic logic unit is used by the processor to implement mathematical operations such as addition, subtraction, or multiplication. In at least one embodiment, the arithmetic logic unit is used to implement logical operations such as logical AND/OR or XOR. In at least one embodiment, the arithmetic logic unit is stateless and is made from physical switching components such as semiconductor transistors arranged to form logic gates. In at least one embodiment, the arithmetic logic unit may operate internally as a stateful logic circuit with an associated clock. In at least one embodiment, the arithmetic logic unit may be constructed as an asynchronous logic circuit where no internal state is maintained in an associated set of registers. In at least one embodiment, the arithmetic logic unit is used by the processor to combine operands stored in one or more registers of the processor to generate an output that can be stored by the processor in another register or memory location.
少なくとも1つの実施例では、プロセッサによって取得された命令を処理した結果、プロセッサは1つ又は複数の入力又はオペランドを算術論理演算ユニットに提示し、算術論理演算ユニットに、算術論理演算ユニットの入力に提供された命令コードに少なくとも部分的に基づいて結果を生成させる。少なくとも1つの実施例では、プロセッサによってALUに提供される命令コードは、プロセッサによって実行される命令に少なくとも部分的に基づいている。少なくとも1つの実施例では、ALU内の組み合わせ論理が入力を処理し、プロセッサ内のバスに置かれる出力を生成する。少なくとも1つの実施例では、プロセッサをクロックすると、ALUによって生成された結果が所望の場所に送られるように、プロセッサは出力バス上の宛先レジスタ、メモリの場所、出力デバイス、又は出力ストレージの場所を選択する。 In at least one embodiment, processing an instruction obtained by the processor results in the processor presenting one or more inputs or operands to an arithmetic logic unit, causing the arithmetic logic unit to generate a result based at least in part on an instruction code provided to an input of the arithmetic logic unit. In at least one embodiment, the instruction code provided by the processor to the ALU is based at least in part on the instruction to be executed by the processor. In at least one embodiment, combinatorial logic in the ALU processes the inputs and generates an output that is placed on a bus within the processor. In at least one embodiment, upon clocking the processor, the processor selects a destination register, memory location, output device, or output storage location on an output bus such that the result generated by the ALU is sent to the desired location.
本文書では、アナログ又はデジタル・データをサブシステム、コンピュータ・システム、又はコンピュータ実装マシンで取得、収集、受信、又は入力することについて参照を行うことができる。少なくとも1つの実施例では、アナログ及びデジタル・データの取得、収集、受信、又は入力のプロセスは、関数呼び出し又はアプリケーション・プログラミング・インターフェースへの呼び出しのパラメータとしてデータを受信することなど、様々なやり方で達成することができる。いくつかの実装例では、アナログ又はデジタル・データの取得、収集、受信、又は入力のプロセスは、シリアル又はパラレル・インターフェースを介してデータを転送することによって達成することができる。別の実装例では、アナログ又はデジタル・データの取得、収集、受信、又は入力のプロセスは、コンピュータ・ネットワークを介してデータを提供エンティティから収集エンティティに転送することによって達成することができる。アナログ又はデジタル・データの提供、出力、伝送、送信、又は提示についても参照を行うことができる。様々な実例では、アナログ又はデジタル・データの提供、出力、伝送、送信、又は提示のプロセスは、関数呼び出しの入力又は出力パラメータ、アプリケーション・プログラミング・インターフェースのパラメータ、又はプロセス間通信メカニズムとしてデータを転送することによって達成することができる。 References may be made herein to acquiring, collecting, receiving, or inputting analog or digital data into a subsystem, computer system, or computer-implemented machine. In at least one embodiment, the process of acquiring, collecting, receiving, or inputting analog and digital data may be accomplished in various ways, such as receiving the data as a parameter of a function call or a call to an application programming interface. In some implementations, the process of acquiring, collecting, receiving, or inputting analog or digital data may be accomplished by transferring the data over a serial or parallel interface. In another implementation, the process of acquiring, collecting, receiving, or inputting analog or digital data may be accomplished by transferring the data from a providing entity to a collecting entity over a computer network. References may also be made to providing, outputting, transmitting, sending, or presenting analog or digital data. In various instances, the process of providing, outputting, transmitting, sending, or presenting analog or digital data may be accomplished by transferring the data as an input or output parameter of a function call, a parameter of an application programming interface, or an inter-process communication mechanism.
上記の議論では、説明された手法の実装例を示しているが、他のアーキテクチャを使用して説明された機能を実装することもでき、本開示の範囲内であることを意図している。さらに、上記のように、議論の目的で特定の役割の分配が定義されているが、状況に応じて、様々な機能及び役割を異なるやり方で分配及び分割することができる。 The above discussion provides example implementations of the described techniques, however, other architectures may be used to implement the described functionality and are intended to be within the scope of this disclosure. Additionally, as noted above, while a particular distribution of roles is defined for purposes of discussion, depending on the circumstances, various functions and roles may be distributed and divided in different ways.
さらに、主題は構造的特徴及び/又は方法論的行為に特化した言語で説明されているが、添付の特許請求の範囲における請求項に係る主題は、必ずしも説明される特定の特徴又は行為に限定されないことを理解されたい。むしろ、具体的な特徴及び行為は、特許請求の範囲を実装する模範的な形態として開示されている。 Furthermore, although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the claimed subject matter in the appended claims is not necessarily limited to the particular features or acts described. Rather, the specific features and acts are disclosed as exemplary forms of implementing the claims.
本開示の主題は、法的要件を満たすために、本明細書では具体的に説明されている。しかしながら、説明自体は、本開示の範囲を限定することを意図しているわけではない。むしろ、本発明者は、請求項に係る主題が他のやり方でも具体化され、他の現在又は将来の技術とともに、本文書に説明されるものと同様の異なるステップ又はステップの組み合わせが含まれるように企図している。さらに、本明細書では、「ステップ」及び/又は「ブロック」という用語を使用して、採用される方法の異なる要素を暗示し得るが、これらの用語は、個々のステップの順序が明示的に説明されていない限り、また、そのような場合を除き、本明細書に開示されている様々なステップ間の任意の特定の順序を意味するものと解釈されるべきではない。 The subject matter of the present disclosure has been specifically described herein to satisfy legal requirements. However, the description itself is not intended to limit the scope of the present disclosure. Rather, the inventors contemplate that the claimed subject matter may be embodied in other ways, including different steps or combinations of steps similar to those described in this document, together with other current or future technologies. Furthermore, although the terms "step" and/or "block" may be used herein to imply different elements of the method employed, these terms should not be construed as implying any particular order between the various steps disclosed herein, unless and until the order of the individual steps is explicitly described.
他の変形形態は、本開示の趣旨内にある。したがって、開示された手法は様々な修正及び代替構造が可能であるが、その特定の例示の実施例は、図面に示され、上記で詳細に説明されている。しかしながら、本開示を、開示された特定の1つ又は複数の形式に限定する意図はなく、逆に、添付の特許請求の範囲に定義されているように、あらゆる修正、代替構造、及び本開示の趣旨及び範囲内に収まる均等物を対象とすることを意図していることが理解されるべきである。 Other variations are within the spirit of the present disclosure. Thus, while the disclosed techniques are susceptible to various modifications and alternative constructions, specific illustrative examples thereof are shown in the drawings and described above in detail. It is to be understood, however, that there is no intention to limit the disclosure to the particular 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 present disclosure, as defined in the appended claims.
Claims (48)
前記第1のリスク分類レベルよりも高いリスク分類を示す第2のリスク分類レベルに従って動作する回路であって、前記メモリ内の第1のメモリ・アドレスに書き込まれるデータのエラー検出コードを判断し、前記第1のメモリ・アドレスに少なくとも部分的に基づいて前記メモリ内の第2のメモリ・アドレスを判断し、前記データを前記第1のメモリ・アドレスに記憶させ、且つ前記エラー検出コードを前記第2のメモリ・アドレスに記憶させる、回路と
を備える、システム。 a memory operable according to a first risk classification level;
and a circuitry operable according to a second risk classification level indicating a higher risk classification than the first risk classification level to determine an error detection code for data to be written to a first memory address in the memory, to determine a second memory address in the memory based at least in part on the first memory address, to store the data at the first memory address, and to store the error detection code at the second memory address.
前記回路は、前記第1のメモリ・アドレスから前記データを取得し、前記第2のメモリ・アドレスから前記エラー検出コードを取得し、前記第1のメモリ・アドレス及び前記第1のメモリ・アドレスから取得された前記データに基づいてチェック・コードを生成し、前記エラー検出コードが前記データには少なくとも1つのエラーが含まれていることを示すときに通知を生成する、請求項1に記載のシステム。 after the data is stored at the first memory address and the error detection code is stored at the second memory address;
2. The system of claim 1, wherein the circuitry retrieves the data from the first memory address, retrieves the error detection code from the second memory address, generates a check code based on the first memory address and the data retrieved from the first memory address, and generates a notification when the error detection code indicates that the data contains at least one error.
第2のインターフェースであって、前記エラー検出コードは、前記第1のインターフェースが前記データを取得することと並行して、前記第2のインターフェースを介して前記第2のメモリ・アドレスから取得され、前記第1のインターフェースは、前記第2のインターフェースとは異なる、第2のインターフェースと
をさらに備える、請求項2に記載のシステム。 a first interface, the data being obtained from the first memory address via the first interface;
3. The system of claim 2, further comprising: a second interface, the error detection code being retrieved from the second memory address through the second interface in parallel with the first interface retrieving the data, the first interface being different from the second interface.
前記第1のサブセクションは、前記第1のメモリ・アドレスを含み、
前記第2のサブセクションは、前記第2のメモリ・アドレスを含み、
前記回路は、ブート手順中に前記第2のサブセクションにおける各メモリ・アドレスに新しいエラー検出コードを書き込む、請求項1に記載のシステム。 the memory includes a first subsection and a second subsection;
the first subsection includes the first memory address;
the second subsection includes the second memory address;
2. The system of claim 1, wherein the circuitry writes a new error detection code to each memory address in the second subsection during a boot procedure.
前記第1のブロックは、前記データ及び前記第1のメモリ・アドレスを含む書き込み要求を前記第2のブロックに送信し、
前記第2のブロックは、前記書き込み要求を受信し、前記エラー検出コードを判断し、前記第2のメモリ・アドレスを判断し、前記データを前記第1のメモリ・アドレスに記憶させ、且つ前記エラー検出コードを前記第2のメモリ・アドレスに記憶させる、請求項1に記載のシステム。 the circuit includes a first block and a second block;
the first block sends a write request to the second block, the write request including the data and the first memory address;
2. The system of claim 1, wherein the second block receives the write request, determines the error detection code, determines the second memory address, stores the data at the first memory address, and stores the error detection code at the second memory address.
前記第1のブロックは、前記書き込みタイマが、前記第1のブロックが前記メモリから応答を受信するまでに所定の時間を超えて経過したことを示すときに、書き込みエラーを生成する、請求項9に記載のシステム。 the first block includes a write timer that starts when the first block transmits the write request to the second block;
10. The system of claim 9, wherein the first block generates a write error when the write timer indicates that more than a predetermined time has elapsed before the first block receives a response from the memory.
前記第1のブロックは、前記第1のメモリ・アドレスに記憶されている前記データについての読み取り要求を前記第2のブロックに送り、
前記第2のブロックは、前記読み取り要求を受信し、前記第1のメモリ・アドレスから前記データを取得し、前記第2のメモリ・アドレスから前記エラー検出コードを取得し、前記第2のブロックが前記エラー検出コードは前記データには前記少なくとも1つのエラーが含まれていることを示すと判断するときに、通知を前記第1のブロックに送信する、請求項9に記載のシステム。 After the first block sends the write request,
the first block sends a read request to the second block for the data stored at the first memory address;
10. The system of claim 9, wherein the second block receives the read request, retrieves the data from the first memory address, retrieves the error detection code from the second memory address, and sends 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.
前記第1のブロックは、前記読み取りタイマが、前記第1のブロックが前記データを受信するまでに所定の時間を超えて経過したことを示すときに、読み取りエラーを生成する、請求項11に記載のシステム。 the first block includes a read timer that starts when the first block sends the read request;
12. The system of claim 11, wherein the first block generates a read error when the read timer indicates that more than a predetermined time has elapsed before the first block receives the data.
前記第1のリスク分類レベルよりも高いレベルのリスクを示す第2のリスク分類レベル内で動作する回路であって、前記第1のメモリ・アドレスから前記データを取得し、前記第2のメモリ・アドレスから前記エラー検出コードを取得し、前記エラー検出コードが前記データには少なくとも1つのエラーが含まれていることを示すときに通知を生成する、回路と
を備える、システム。 a memory operating within a first risk classification level, the memory including a separated memory region including a first memory address for storing data and a second memory address for storing an error detection code;
and a circuitry operating within a second risk classification level indicating a higher level of risk than the first risk classification level, the circuitry retrieving the data from the first memory address, retrieving the error detection code from the second memory address, and generating a notification when the error detection code indicates that the data contains at least one error.
前記第1のブロックは、前記第1のメモリ・アドレスに記憶されている前記データについての読み取り要求を前記第2のブロックに送り、
前記第2のブロックは、前記読み取り要求を受信し、前記データを取得し、前記エラー検出コードを取得し、前記エラー検出コードが前記データには前記少なくとも1つのエラーが含まれていることを示すときに前記通知を生成する、請求項19に記載のシステム。 the circuit includes a first block and a second block;
the first block sends a read request to the second block for the data stored at the first memory address;
20. The system of claim 19, wherein the second block receives the read request, retrieves the data, retrieves the error detection code, and generates the notification when the error detection code indicates that the data contains the at least one error.
前記第1のブロックは、前記データ及び前記第1のメモリ・アドレスを前記第2のブロックに送信し、
前記第2のブロックは、前記エラー検出コードを判断し、前記第2のメモリ・アドレスを判断し、前記データを前記第1のメモリ・アドレスに記憶させ、且つ前記エラー検出コードを前記第2のメモリ・アドレスに記憶させる、請求項21に記載のシステム。 before the first block sends the read request;
the first block transmits the data and the first memory address to the second block;
22. The system of claim 21, wherein the second block determines the error detection code, determines the second memory address, stores the data at the first memory address, and stores the error detection code at the second memory address.
前記第1のブロックは、前記書き込みタイマが、前記第1のブロックが前記メモリから応答を受信するまでに第1の所定の時間を超えて経過したことを示すときに、書き込みエラーを生成する、請求項23に記載のシステム。 the first block includes a write timer that starts when the first block transmits the data and the first memory address to the second block;
24. The system of claim 23, wherein the first block generates a write error when the write timer indicates that more than a first predetermined time has elapsed before the first block receives a response from the memory.
前記第1のリスク分類レベルよりも低いレベルのリスクを示す第2のリスク分類レベルで動作するメモリ内の第1のメモリ・アドレスに書き込むデータのエラー検出コードを判断するステップと、
前記第1のメモリ・アドレスに少なくとも部分的に基づいて、前記メモリ内の第2のメモリ・アドレスを判断するステップと、
前記データを前記第1のメモリ・アドレスに記憶させ、且つ前記エラー検出コードを前記第2のメモリ・アドレスに記憶させるステップと
を含む、方法。 1. A method performed by a circuit operating at a first risk classification level, comprising:
determining an error detection code for data to be written to a first memory address in a memory operating at a second risk classification level indicating a lower level of risk than the first risk classification level;
determining a second memory address within the memory based at least in part on the first memory address;
storing the data at the first memory address and storing the error detection code at the second memory address.
前記エラー検出コードが前記第2のメモリ・アドレスに記憶された後に、前記第2のメモリ・アドレスから前記エラー検出コードを取得するステップと、
前記第1のメモリ・アドレス及び前記第1のメモリ・アドレスから取得された前記データに基づいてチェック・コードを生成するステップと、
前記チェック・コードが前記データには少なくとも1つのエラーが含まれていることを示すときに通知を生成するステップと
をさらに含む、請求項33に記載の方法。 retrieving the data from the first memory address after the data has been stored at the first memory address;
after the error detection code is stored in the second memory address, obtaining the error detection code from the second memory address;
generating a check code based on the first memory address and the data obtained from the first memory address;
34. The method of claim 33, further comprising the step of: generating a notification when the check code indicates that the data contains at least one error.
前記チェック・コードは、前記チェック・コードが前記エラー検出コードと一致しないときに、前記データには前記少なくとも1つのエラーが含まれていることを示す、請求項34に記載の方法。 the error detection code is generated based on the first memory address and the data before the data is stored at the first memory address;
35. The method of claim 34, wherein the check code indicates that the data contains the at least one error when the check code does not match the error detection code.
ブート手順中に前記第2のサブセクションにおける各メモリ・アドレスに新しいエラー検出コードを書き込むステップをさらに含む、請求項33に記載の方法。 the memory includes a first subsection and a second subsection, the first subsection includes the first memory address and the second subsection includes the second memory address, the method comprising:
34. The method of claim 33, further comprising the step of writing a new error detection code to each memory address in the second subsection during a boot procedure.
前記第1のリスク分類レベルよりも低いレベルのリスクを示す第2のリスク分類レベルで動作するメモリの第1のメモリ・アドレスからデータを取得するステップと、
前記第1のメモリ・アドレスに少なくとも部分的に基づいて、前記メモリ内の第2のメモリ・アドレスを判断するステップと、
前記第2のメモリ・アドレスからエラー検出コードを取得するステップと、
前記エラー検出コードが前記データには少なくとも1つのエラーが含まれていることを示すときに通知を生成するステップと
を含む、方法。 1. A method performed by a circuit operating at a first risk classification level, comprising:
obtaining data from a first memory address of a memory operating at a second risk classification level indicating a lower level of risk 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;
generating a notification when the error detection code indicates that the data contains at least one error.
前記チェック・コードが前記エラー検出コードと一致するかどうかを判断することであって、前記エラー検出コードは、前記エラー検出コードが前記チェック・コードと一致しないときに前記データには前記少なくとも1つのエラーが含まれていることを示す、判断するステップと、
をさらに含む、請求項37に記載の方法。 generating a check code based on the first memory address and the data obtained from the first memory address;
determining whether the check code matches the error detection code, the error detection code indicating that the data contains the at least one error when the error detection code does not match the check code;
38. The method of claim 37, further comprising:
前記第1のメモリ・アクセスと前記第2のメモリ・アクセスとの間に時間遅延を発生させるステップをさらに含む、請求項37に記載の方法。 The circuitry obtains the data from the first memory address during a first memory access, and the circuitry obtains the error detection code from the second memory address during a second memory access, and the method further comprises:
38. The method of claim 37, further comprising the step of: creating a time delay between the first memory access and the second memory access.
前記第1のブロックによって、前記第1のメモリ・アドレスに記憶されている前記データについての読み取り要求を前記第2のブロックに送るステップと、
前記第2のブロックによって、前記読み取り要求を受信するステップであって、前記第2のブロックは、前記データを取得し、前記エラー検出コードを取得し、前記エラー検出コードが前記データには前記少なくとも1つのエラーが含まれていることを示すときに前記通知を生成する、ステップと
をさらに含む、請求項37に記載の方法。 The circuit includes a first block and a second block, and the method includes:
sending, by the first block, a read request to the second block for the data stored at the first memory address;
38. The method of claim 37, further comprising: receiving the read request by the second block, the second block obtaining the data, obtaining the error detection code, and generating the notification when the error detection code indicates that the data contains the at least one error.
前記読み取りタイマが、前記第1のブロックが前記データを受信するまでに所定の時間を超えて経過したことを示すときに、前記第1のブロックによって、読み取りエラーを生成するステップをさらに含む、請求項40に記載の方法。 A read timer is started when the first block sends the read request, and the method further comprises:
41. The method of claim 40, further comprising generating a read error by the first block when the read timer indicates that more than a predetermined time has elapsed before the first block receives the data.
前記第1のブロックが前記読み取り要求を送る前に、前記第2のブロックによって前記エラー検出コードを判断するステップと、
前記第1のブロックが前記読み取り要求を送る前に、前記第2のブロックによって前記第2のメモリ・アドレスを判断するステップと、
前記第1のブロックが前記読み取り要求を送る前に、前記第2のブロックによって、前記データを前記第1のメモリ・アドレスに記憶させ、且つ前記エラー検出コードを前記第2のメモリに記憶させるステップと
をさらに含む、請求項40に記載の方法。 sending a write request by the first block to the second block before the first block sends the read request, the write request including the data and the first memory address;
determining, by the second block, the error detection code before the first block sends the read request;
determining, by the second block, the second memory address before the first block sends the read request;
41. The method of claim 40, further comprising the step of causing the second block to store the data at the first memory address and store the error detection code in the second memory before the first block sends the read request.
前記書き込みタイマが、前記第1のブロックが前記メモリから応答を受信するまでに第1の所定の時間を超えて経過したことを示すときに、前記第1のブロックによって、書き込みエラーを生成するステップをさらに含む、請求項42に記載の方法。 A write timer is started when the first block sends the write request, and the method further comprises:
43. The method of claim 42, further comprising generating a write error by the first block when the write timer indicates that more than a first predetermined time has elapsed before the first block receives a response from the memory.
前記読み取りタイマが、前記第1のブロックが前記データを受信するまでに第2の所定の時間を超えて経過したことを示すときに、前記第1のブロックによって、読み取りエラーを生成するステップをさらに含む、請求項43に記載の方法。 A read timer is started when the first block sends the read request, and the method further comprises:
44. The method of claim 43, further comprising generating a read error by the first block when the read timer indicates that more than a second predetermined time has elapsed before the first block receives the data.
前記第1のメモリ・アクセスと前記第2のメモリ・アクセスとの間に時間遅延を発生させるステップをさらに含む、請求項42に記載の方法。 the second block stores the data at the first memory address during a first memory access, and the second block stores the error detection code at the second memory address during a second memory access, the method further comprising:
43. The method of claim 42, further comprising the step of: creating a time delay between the first memory access and the second memory access.
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 |
|---|---|
| JP2024530916A true JP2024530916A (en) | 2024-08-27 |
Family
ID=83191859
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2024505633A Pending JP2024530916A (en) | 2021-07-30 | 2022-07-26 | Data transmission between domains of different security levels within a system-on-chip |
Country Status (4)
| Country | Link |
|---|---|
| JP (1) | JP2024530916A (en) |
| CN (1) | CN116034343A (en) |
| DE (1) | DE112022003757T5 (en) |
| WO (1) | WO2023009560A1 (en) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN116300800B (en) * | 2023-02-21 | 2025-09-09 | 中国第一汽车股份有限公司 | Signal verification method and device, vehicle and storage medium |
| EP4530813A1 (en) * | 2023-09-26 | 2025-04-02 | Samsung Electronics Co., Ltd. | Storage devices having multiple storage regions |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR101537018B1 (en) * | 2008-10-01 | 2015-07-17 | 삼성전자주식회사 | Secure Memory Interface, System and Smart Card Including the same |
| US9442801B2 (en) * | 2014-09-26 | 2016-09-13 | Hewlett Packard Enterprise Development Lp | Platform error correction |
| CN105743731B (en) * | 2014-12-11 | 2019-03-29 | 国际商业机器公司 | Method and apparatus for the fault detection in storage system |
| US10625752B2 (en) * | 2017-12-12 | 2020-04-21 | Qualcomm Incorporated | System and method for online functional testing for error-correcting code function |
| 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 |
| US11030034B2 (en) * | 2019-02-05 | 2021-06-08 | Intel Corporation | Quantitative software failure mode and effects analysis |
| DE102019128528A1 (en) * | 2019-10-22 | 2021-04-22 | Infineon Technologies Ag | DATA CRYPTOGRAPHY DEVICES AND STORAGE SYSTEMS |
-
2022
- 2022-07-26 JP JP2024505633A patent/JP2024530916A/en active Pending
- 2022-07-26 CN CN202280005745.XA patent/CN116034343A/en active Pending
- 2022-07-26 DE DE112022003757.1T patent/DE112022003757T5/en active Pending
- 2022-07-26 WO PCT/US2022/038405 patent/WO2023009560A1/en not_active Ceased
Also Published As
| Publication number | Publication date |
|---|---|
| WO2023009560A1 (en) | 2023-02-02 |
| CN116034343A (en) | 2023-04-28 |
| DE112022003757T5 (en) | 2024-05-29 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12403919B2 (en) | Hardware fault detection for feedback control systems in autonomous machine applications | |
| US20230095988A1 (en) | Systems and methods for performing commands in a vehicle using speech and image recognition | |
| US12012125B2 (en) | Communicating faults to an isolated safety region of a system on a chip | |
| US11803668B2 (en) | Isolating a region of a system on a chip for safety critical operations | |
| US20240300537A1 (en) | Communicating faults to an isolated safety region of a system on a chip | |
| US11803192B2 (en) | Visual odometry in autonomous machine applications | |
| US11573856B1 (en) | Transmitting data between regions of varying safety integrity levels in a system on a chip | |
| US12039362B2 (en) | Processing interrupt requests for autonomous systems and applications | |
| JP2023071168A (en) | Particle-based hazard detection for autonomous machine applications | |
| JP2022190646A (en) | Voltage monitoring over multiple frequency ranges for autonomous machine applications | |
| JP2024530916A (en) | Data transmission between domains of different security levels within a system-on-chip | |
| US20250199853A1 (en) | Determinism and reproducibility of data flow | |
| US12417137B2 (en) | Detecting hardware faults in data processing pipelines | |
| JP2024536672A (en) | Isolating System-on-Chip Areas for Safety-Critical Operation | |
| US12189558B2 (en) | Dynamic skew realignment over multiple transmission lanes in integrated computing platforms | |
| US11677839B2 (en) | Automatic coalescing of GPU-initiated network communication | |
| US20240410726A1 (en) | Synchronizing multi-modal sensor measurements for object tracking in autonomous systems and applications | |
| US20250086036A1 (en) | Evaluating availability requirements for safety analysis in autonomous systems and applications | |
| US20250284618A1 (en) | Health and error monitoring of sensor fusion systems | |
| US20250245087A1 (en) | Detecting failures in sensor device settings | |
| US20250119288A1 (en) | Secure data storage using data integrity verification for autonomous systems and applications | |
| US20240370534A1 (en) | Data protection and security for autonomous systems and applications | |
| US20250125909A1 (en) | End-to-end camera view verification for automotive systems and applications | |
| US20250124834A1 (en) | End-to-end telltale verification for automotive systems and applications | |
| US20250112920A1 (en) | Protecting controller area network (can) messages in autonomous systems and applications |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20250408 |