(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-08
(54)【発明の名称】安全重視の動作のためのシステム・オン・チップの領域の隔離
(51)【国際特許分類】
G06F 15/78 20060101AFI20241001BHJP
B60W 60/00 20200101ALI20241001BHJP
G06F 21/70 20130101ALI20241001BHJP
B60W 50/035 20120101ALI20241001BHJP
G08G 1/09 20060101ALI20241001BHJP
【FI】
G06F15/78 530
B60W60/00
G06F21/70
B60W50/035
G08G1/09 V
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024504200
(86)(22)【出願日】2022-07-26
(85)【翻訳文提出日】2024-02-27
(86)【国際出願番号】 US2022038404
(87)【国際公開番号】W WO2023009559
(87)【国際公開日】2023-02-02
(31)【優先権主張番号】202111034492
(32)【優先日】2021-07-30
(33)【優先権主張国・地域又は機関】IN
(32)【優先日】2021-09-16
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】501450960
【氏名又は名称】エヌビディア コーポレーション
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】クリシュナニ、パダム パット
(72)【発明者】
【氏名】ジェイ ブイ、アビナッシュ
(72)【発明者】
【氏名】ゴーシュ、アニルバン
(72)【発明者】
【氏名】ファニクマール、パルバターム
(72)【発明者】
【氏名】ヤラマッディ、バムシクリシュナ
(72)【発明者】
【氏名】カルリ、シュリニバーサ レディ
【テーマコード(参考)】
3D241
5B062
5H181
【Fターム(参考)】
3D241BA61
3D241BA64
5B062AA10
5B062CC05
5B062CC10
5H181AA01
5H181BB04
5H181BB15
5H181BB19
5H181CC03
5H181CC04
5H181CC14
5H181FF10
5H181FF13
5H181LL01
5H181LL02
5H181LL04
5H181LL09
(57)【要約】
様々な実例において、集積回路は、別個のドメイン内で動作する第1の及び第2の部分を含む。第2の部分は、第1の及び第2の部分を接続するインターフェースを有する。第2の部分は、インターフェースを介する第1の部分との通信を防ぐためにインターフェースを選択的にロックし、インターフェースを介する第1の部分との通信を可能にするためにインターフェースを選択的にアンロックする。
【特許請求の範囲】
【請求項1】
第1のクロックと、
前記第1のクロックから隔離された第2のクロックと、
第1の電力接続と、
前記第1の電力接続から隔離された第2の電力接続と、
前記第1の電力接続を使用して電力を及び前記第1のクロックを使用して第1のクロック信号を受信するための第1の部分と、
前記第2の電力接続を使用して電力を及び前記第2のクロックを使用して第2のクロック信号を受信するための第2の部分であって、前記第1の部分と通信するためのインターフェース、インターフェース制御、並びに前記インターフェース制御をロック及びアンロックするためのプロセッサを備える前記第2の部分であり、前記インターフェース制御が、前記インターフェース制御がロックされるときに前記インターフェースを介する通信を防ぎ、前記インターフェース制御は、前記インターフェース制御がアンロックされるときに前記インターフェースを介する通信を可能にする、前記第2の部分と
を備える、集積回路。
【請求項2】
前記第1の部分が、前記第1の部分において生じる1つ又は複数の障害に対応する証拠を、前記第2の部分に通信するための第1の障害アグリゲータを備え、
前記第2の部分が、前記1つ又は複数の障害に対応する前記証拠を受信及び記憶するための第2の障害アグリゲータを備え、
前記集積回路が、前記第1の及び第2の障害アグリゲータを接続する障害インターフェースを備え、
前記障害インターフェースが、前記インターフェースとは別個であり、
前記プロセッサが、前記第2の障害アグリゲータがどの障害に対応する証拠も記憶していないときにのみ、前記インターフェース制御をアンロックする、
請求項1に記載の集積回路。
【請求項3】
前記第2の部分が、前記プロセッサが前記インターフェースを介する前記第1の部分との通信を開始するときに開始するタイマを備え、
前記タイマは、前記タイマが所定の時間量より多くが経過したことを示しており、前記第1の部分が通信に応答していないときに障害の証拠を生成する、
請求項1に記載の集積回路。
【請求項4】
前記タイマが、前記タイマが所定の時間量より多くが経過したことを示す前に前記第1の部分が前記通信に応答するときに、リセットし、
前記プロセッサが、前記プロセッサが前記第1の部分との通信を完了した後、前記インターフェースをロックする、
請求項3に記載の集積回路。
【請求項5】
前記第1の及び第2の部分によって共用される不揮発性メモリをさらに備え、前記第2の部分が、ローカル・メモリを備え、前記プロセッサが、前記集積回路がブートするときに命令を前記不揮発性メモリから前記ローカル・メモリにコピーし、前記命令が、前記インターフェースがロックされるときに前記プロセッサによって実行されることになる、請求項1に記載の集積回路。
【請求項6】
前記第1の部分が、揮発性メモリを備え、
前記第2の部分が、前記インターフェースを介して前記揮発性メモリと通信する、
請求項1に記載の集積回路。
【請求項7】
連続した1つの半導体材料上に存在する、請求項1に記載の集積回路。
【請求項8】
自動車システム・オン・チップ(「SoC」)の一部分を実装する、請求項1に記載の集積回路。
【請求項9】
前記第1の部分が、第1のリスク分類レベルにおいて動作し、
前記第2の部分が、第2のリスク分類レベルにおいて動作し、
前記第2の分類リスク・レベルが、前記第1のリスク分類レベルより高い、
請求項1に記載の集積回路。
【請求項10】
集積回路の第1の部分における障害アグリゲータが少なくとも所定の数の障害を示すデータを含むかどうかを、前記第1の部分によって、決定することと、
前記第1の部分が、前記障害アグリゲータは少なくとも前記所定の数の障害を示すデータを含まないと決定するとき、前記集積回路の第2の部分とのインターフェースを、前記第1の部分によって、アンロックすることと、
前記アンロックされたインターフェースを介して前記第2の部分のアクセスを、前記第1の部分によって、開始することと、
前記アクセスを開始した後に前記インターフェースを、前記第1の部分によって、ロックすることと
を含む、方法。
【請求項11】
前記アクセスを開始することが、アクセス・タイマを開始し、
前記第1の部分は、前記アクセス・タイマが開始されたときから所定の時間量より多くが経過したことを前記アクセス・タイマが示しており、応答が前記第2の部分から受信されていないことを検出した後、前記インターフェースをロックする、
請求項10に記載の方法。
【請求項12】
前記第1の部分は、前記アクセス・タイマが開始されたときから所定の時間量より多くが経過したことを前記アクセス・タイマが示しており、応答が前記第2の部分から受信されていないことを検出した後に、新しい障害を生成する、請求項11に記載の方法。
【請求項13】
前記アクセスを開始することが、アクセス・タイマを開始し、前記方法が、
前記アクセス・タイマが開始されたときから所定の時間量より多くが経過したことを前記アクセス・タイマが示す前に前記第2の部分からの応答を、前記第1の部分によって、受信すること、前記アクセス・タイマを停止する前記応答を受信すること、前記第1の部分が、前記アクセスを完了した後に、前記インターフェースをロックすること
をさらに含む、請求項10に記載の方法。
【請求項14】
前記第1の部分が、前記障害アグリゲータは少なくとも前記所定の数の障害を示すデータを含むと決定するとき、1つ又は複数の修正行動を、前記第1の部分によって、実行すること
をさらに含む、請求項10に記載の方法。
【請求項15】
前記集積回路が、自動車システム・オン・チップ(「SoC」)の一部分を実装し、
前記1つ又は複数の修正行動が、自律型車両を安全な状態に置くことになっている、
請求項14に記載の方法。
【請求項16】
前記集積回路が、自動車システム・オン・チップ(「SoC」)の一部分を実装し、
前記第1の部分が、自律型車両が運転している間に、前記自律型車両のための安全機能を実行し、
前記第2の部分が、前記自律型車両が運転している間に、自律運転機能を実行する、
請求項10に記載の方法。
【請求項17】
前記インターフェースが、前記第1の部分を前記第2の部分の揮発性メモリ又は制御バックボーンと接続する、請求項10に記載の方法。
【請求項18】
前記第1の部分が、第1のクロック・ドメインにおいて動作し、
前記第2の部分が、前記第1のクロック・ドメインとは異なる第2のクロック・ドメインにおいて動作し、
前記インターフェースが、前記第2の部分から受信された信号を前記第1のクロック・ドメインに変換するフェーズ同期回路を備える、
請求項10に記載の方法。
【請求項19】
第1のドメイン内で第1のリスク・レベルにおいて動作する第1の部分と、
第2のドメイン内で第2のリスク・レベルにおいて動作する第2の部分であり、前記第2のリスク・レベルが、前記第1のリスク・レベルより大きく、前記第2の部分が、プロセッサと前記第1の及び第2の部分を接続するインターフェースとを備え、前記プロセッサが、前記インターフェースを介する通信を防ぐために前記インターフェースを選択的にロックし、前記プロセッサが、前記インターフェースを介する通信を可能にするために前記インターフェースを選択的にアンロックする、前記第2の部分と
を備える、集積回路。
【請求項20】
前記第1のドメインに電力を供給する第1の電力接続と、
前記第1の電力接続から電気的に隔離され、前記第2のドメインに電力を供給する第2の電力接続とをさらに備え、前記インターフェースが、前記インターフェースを介する任意の通信の電圧を調整するための少なくとも1つの電圧シフタを備える、
請求項19に記載の集積回路。
【請求項21】
第1のクロック信号を前記第1のドメインに供給する第1のクロックと、
前記第1のクロックから隔離され、第2のクロック信号を前記第2のドメインに供給する第2のクロックとをさらに備え、前記インターフェースが、前記インターフェースを介する任意の通信のフェーズを調整するためのフェーズ同期回路を備える、
請求項19に記載の集積回路。
【請求項22】
前記インターフェースが、1つ又は複数のセキュリティ・ルールを実装するファイアウォールを備え、
前記ファイアウォールが、前記1つ又は複数のセキュリティ・ルールに基づいて前記インターフェースを介する通信を許可する又はブロックする、
請求項19に記載の集積回路。
【請求項23】
前記第1の部分が、前記第1の部分において生じる障害を示すデータを前記第2の部分に通信するために、第1の障害アグリゲータを備え、
前記第2の部分が、前記障害を示す前記データを受信し、前記障害を示す前記データを、前記障害が前記プロセッサによって取り除かれるまで記憶するために、第2の障害アグリゲータを備え、
前記集積回路が、前記第1の及び第2の障害アグリゲータを接続する障害インターフェースを備え、
前記障害インターフェースが、前記インターフェースとは別個であり、
前記プロセッサが、前記第2の障害アグリゲータによって記憶された任意の障害を示す前記データに対応する障害が前記プロセッサによって取り除かれた後にのみ、前記インターフェースをアンロックする、
請求項19に記載の集積回路。
【請求項24】
前記第2の部分が、前記プロセッサが前記インターフェースをアンロックするときに開始するタイマを備え、
前記タイマが所定の時間量より多くが経過したことを示しており、前記第1の部分が前記インターフェースを介して前記第1の部分に送られる通信に応答していないとき、前記タイマが、新しい障害を生成する、
請求項19に記載の集積回路。
【請求項25】
前記タイマが、前記タイマが前記所定の時間量より多くが経過したことを示す前に前記第1の部分が前記通信に応答するときに、リセットし、
前記プロセッサが、前記プロセッサが前記第1の部分との通信を完了した後、前記インターフェースをロックする、
請求項24に記載の集積回路。
【請求項26】
前記第1の部分が、前記第1の及び第2の部分によって共用される不揮発性メモリを備え、
前記第2の部分が、ローカル・メモリを備え、
前記プロセッサが、前記集積回路がブートするときに、前記不揮発性メモリから前記ローカル・メモリに命令をコピーし、
前記命令が、前記インターフェースがロックされるときに、前記プロセッサによって実行される、
請求項19に記載の集積回路。
【請求項27】
前記第1の部分が、揮発性メモリを備え、
前記第2の部分が、前記インターフェースを介して前記揮発性メモリと通信する、
請求項19に記載の集積回路。
【請求項28】
前記第1の部分が、制御バックボーンを備え、
前記インターフェースが、前記制御バックボーンに接続され、
前記第2の部分が、前記インターフェース及び前記制御バックボーンを介して前記第1の部分の少なくとも1つの部分と通信する、
請求項19に記載の集積回路。
【請求項29】
連続した1つの半導体材料上に存在する請求項19に記載の集積回路。
【請求項30】
自動車システム・オン・チップ(「SoC」)の一部分を実装する請求項19に記載の集積回路。
【請求項31】
前記第2の部分が、前記インターフェースを備える複数のインターフェースを備え、前記複数のインターフェースのそれぞれが、前記第2の部分を前記第1の部分の対応する部分と接続し、前記プロセッサが、前記第1の部分の前記対応する部分との特定のインターフェースを介する通信を可能にするために、前記複数のインターフェースのうちの前記特定の1つを選択的にアンロックする、請求項19に記載の集積回路。
【請求項32】
前記プロセッサが、前記第1の部分との前記複数のインターフェースを介する通信を防ぐためにアンロックされる前記複数のインターフェースのうちのいずれかを選択的にロックする、請求項31に記載の集積回路。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、参照によりその全内容が本明細書に組み込まれている、2021年7月30日に出願された「ISOLATING A REGION OF A SYSTEM ON A CHIP FOR SAFETY CRITICAL OPERATIONS」という題名のインド仮出願第202111034492号、及び2021年9月16日に出願された「ISOLATING A REGION OF A SYSTEM ON A CHIP FOR SAFETY CRITICAL OPERATIONS」という題名の米国特許出願第17/477,214号の優先権を主張するものである。
【0002】
少なくとも1つの実施例は、より高いリスク・レベルで動作する回路の領域をより低いリスク・レベルで動作する回路の他の領域から隔離することに関する。たとえば、少なくとも1つの実施例は、本明細書に記載の様々な新しい技法を実装するシステム・オン・チップに関する。別の実例として、少なくとも1つの実施例は、そのようなシステム・オン・チップを含む自律型車両に関する。
【背景技術】
【0003】
自動車安全整合性レベル(「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」)においてある種の障害が検出されるときに外部制御ユニットによって実行される。一般的に言えば、外部制御ユニットは、自動車SoC(たとえば、ASIL-B)よりも高いリスク・レベル(たとえば、ASIL-D)で動作し得る。残念ながら、そのような外部制御ユニットは、レイテンシをもたらし、それらは、自動車SoC、たとえば、DRAM、不揮発性メモリなど、内にも存在する及び自動車プラットフォーム内の(たとえば、回路基板上の)空間をそれぞれ占有する別個の構成要素を必要とするので、高価であり得る。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許出願第16/101,232号
【発明の概要】
【課題を解決するための手段】
【0005】
システム・オン・チップの領域を隔離するための本システム及び方法について、添付の図面を参照して、以下に詳しく説明する。
【図面の簡単な説明】
【0006】
【
図1】本開示のいくつかの実施例による、例示的自動車プラットフォームのイラストレーションである。
【
図2】本開示のいくつかの実施例による、自動車SoCの他の構成要素と自動車SoCに統合された安全島を接続する例示的インターフェースのイラストレーションである。
【
図3】本開示のいくつかの実施例による、コクーン・モードと非隔離モードとの間で安全島を移行するための方法を示す流れ図である。
【
図4】本開示のいくつかの実施例による、自動車SoCの他の構成要素から安全島に障害を通信する例示的障害インターフェースのイラストレーションである。
【
図5A】本開示のいくつかの実施例による、安全島に障害を通信するための方法を示す流れ図である。
【
図5B】本開示のいくつかの実施例による、SoC障害アグリゲータから受信された割り込みを処理するためにプロセッサが使用し得る方法を示す流れ図である。
【
図5C】本開示のいくつかの実施例による、修正済みの及び未修正のエラー信号を処理するためにSI110が使用し得る方法を示す流れ図である。
【
図5D】本開示のいくつかの実施例による、SoC障害アグリゲータ信号を処理するためにSI110が使用し得る方法を示す流れ図である。
【
図6A】本開示のいくつかの実施例による、低重大性未修正エラー(たとえば、最小値)がアサートされた後に安全島のプロセッサによって受信及び送信される信号の例示的信号タイミング図を示す。
【
図6B】本開示のいくつかの実施例による、高重大性未修正エラー(たとえば、最大値)がアサートされた後に安全島のプロセッサによって受信及び送信される信号の例示的信号タイミング図を示す。
【
図6C】本開示のいくつかの実施例による、未修正エラー(たとえば、最大値)がアサートされた後だが安全島がメールボックス割り込みを受信しない安全島のプロセッサによって受信及び送信される信号の例示的信号タイミング図を示す。
【
図7】本開示のいくつかの実施例による、安全島及び自動車SoCの他の構成要素によって共用される揮発性メモリにおいて定義されるカーブアウトにデータを書き込む方法を示す流れ図である。
【
図8】本開示のいくつかの実施例による、
図7の方法を実行する安全島のエラー検出ブロックの一実例を示す。
【
図9】本開示のいくつかの実施例による、カーブアウトからデータを読み取るための方法を示す流れ図である。
【
図10】本開示のいくつかの実施例による、
図9の方法を実行する安全島のエラー検出ブロックの一実例を示す。
【
図11】いくつかの実施例による、エラー検出ブロックが退出及び進入タイマを含む又はそれらに接続されるときにエラー検出ブロックによって生成されるエラー通知を示すブロック図のイラストレーションである。
【
図12】本開示のいくつかの実施例による、例示的自律型車両のイラストレーションである。
【
図13】本開示のいくつかの実施例による、
図12の例示的自律型車両のカメラ位置及び視野の一実例である。
【
図14】本開示のいくつかの実施例による、
図12の例示的自律型車両の例示的システム・アーキテクチャのブロック図である。
【
図15】本開示のいくつかの実施例による、クラウドベースのサーバと
図12の例示的自律型車両との間の通信のためのシステム図である。
【
図16】本開示のいくつかの実施例を実装する際に使用するのに適した例示的計算デバイスのブロック図である。
【発明を実施するための形態】
【0007】
より高いリスク・レベル(たとえば、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」)と称され得る。
【0008】
自動車処理システム102は、少なくとも1つの自動車SoC104を含む。自動車SoC104は、少なくともいくつかの機能を実行するが、オプションの外部制御ユニット106(たとえば、外部ASIL-Dマイクロコントローラ・ユニットを含む)に1つ又は複数の安全機能をオフロードし得る。オプションの外部制御ユニット106は、自動車SoC104より高いリスク分類レベル(たとえば、ASIL-D)の下で動作する、及びそれに準拠し得る。オプションの外部制御ユニット106を含む実施例において、障害が、自動車SoC104において生じるとき、その障害は、自動車プラットフォーム100を安全な状態に戻すための1つ又は複数の行動を取り得る、オプションの外部制御ユニット106に通信される。したがって、安全性機能の少なくとも一部は、オプションの外部制御ユニット106によって実行され得る。しかしながら、オプションの外部制御ユニット106は、レイテンシをもたらし得、自動車プラットフォーム100内(たとえば、回路基板上)の空間をそれぞれ占有する別個の構成要素、たとえば、DRAM、不揮発性メモリなど、を必要とし得るので、高価であり得る。
【0009】
オプションの外部制御ユニット106によってもたらされるレイテンシ及び費用のうちの少なくともいくらかを回避するために、
図1の自動車プラットフォーム100は、自動車SoC104に統合された機能的安全島又は安全島(「SI:safety island」)110を含む。SI110は、残りの自動車SoC104と比較してより高いリスク分類レベル(たとえば、ASIL-D)の下で動作する、及びそれに準拠した、計算クラスタとして実装され得る。SI110は、通常はオプションの外部制御ユニット106によって実行される機能の少なくとも一部を実行し得る。SI110の存在は、オプションの外部制御ユニット106が完全に省略されること或いはより洗練されていない及び/又はより低コストの外部制御ユニットを使用して実装されることを可能にする。たとえば、オプションの外部制御ユニット106が存在するとき、それは、1つ又は複数のレガシ機能、たとえば、コントローラ・エリア・ネットワーク(「CAN:Controller Area Network」バス)バスにおいて通信を提供すること、自動車SoC104のリセット・コントローラを提供すること、及び/又は搭載電圧監視を実行すること、を実行し得る。
【0010】
自動車SoC104及びオプションの外部制御ユニット106(存在するとき)に加えて、自動車処理システム102は、自動車SoC104の第1の(SoC)クロック112、SI110の第2の(SI)クロック114、及び電力管理集積回路(「IC」)116を含み得る。自動車処理システム102の構成要素のそれぞれは、ハードウェアにおいて少なくとも部分的に実装される。自動車処理システム102の論理構成要素(たとえば、自動車SoC104及びオプションの外部制御ユニット106)は、通常は、1つ又は複数の集積回路チップ内のハードウェア論理回路においてそれぞれ実装される。論理は、ハードワイヤード又はプログラム可能、或いはハードワイヤード及びプログラム可能要素の組合せでもよい。追加で又は別法として、自動車処理システム102のある種の機能は、組み込まれたマイクロプロセッサ又はマイクロコントローラによって実行されるソフトウェア又はファームウェアにおいて実装され得る。
【0011】
第1の及び第2のクロック112及び114は、2つの別個のクロック信号を自動車SoC104に提供する。具体的には、第1の(SoC)クロック112によって生成される第1のクロック信号は、SI110以外の自動車SoC104の構成要素160に提供され、第2の(SI)クロック114によって生成される第2のクロック信号は、SI110に提供される。したがって、SI110及びその他の構成要素160は、別個のクロック・ドメイン内で動作するものとして特徴を示され得る。SI110のクロック・ドメインは、SIクロック・ドメインと称されることになり、その他の構成要素160のクロック・ドメインは、SoCクロック・ドメインと称されることになる。第1の及び第2のクロック112及び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のクロック信号を提供し得る。
【0012】
電力管理IC116は、自動車処理システム102の他の構成要素に電力を供給する。たとえば、母線又は接続118A~118Cは、それぞれ、自動車SoC104のその他の構成要素160、SI110、及びオプションの外部制御ユニット106に電力管理IC116を接続する。電力接続118A~118Cは、互いから、それぞれ、自動車SoC104のその他の構成要素160、SI110、及びオプションの外部制御ユニット106(存在するとき)を電気的に隔離するのを助ける。したがって、SI110は、その他の構成要素160及びオプションの外部制御ユニット106(存在するとき)と別個の電圧ドメイン内で動作し得る。SI110の電圧ドメインは、SI電圧ドメインと称されることになり、その他の構成要素160の電圧ドメインは、SoC電圧ドメインと称されることになる。電力管理IC116は、適切な電力を自動車処理システム102の構成要素に供給する1つ又は複数の集積回路として実装され得る。電力接続118A~118Cは、導電要素、たとえば、送電線、ワイヤ、電力トレース、及び類似のもの、としてそれぞれ実装され得る。
【0013】
前述のように、SI110は、SIクロック・ドメイン及びSI電圧ドメインにおいて動作する。ともに、SIクロック・ドメイン及びSI電圧ドメインは、SIドメインと称されることになる。同様に、その他の構成要素160は、SoCクロック・ドメイン及びSoC電圧ドメインにおいて動作する。ともに、SoCクロック・ドメイン及びSoC電圧ドメインは、SoCドメインと称されることになる。
【0014】
自動車SoC104のその他の構成要素160は、メイン中央処理装置(「CPU」)複合体120、補助安全ユニット122、自動車SoC機能を実行するための回路124、揮発性データ・ストレージ又はメモリ126(たとえば、ダイナミック・ランダム・アクセス・メモリ(「DRAM」))、及び、不揮発性データ・ストレージ又はメモリ128を含み得る。メインCPU複合体120は、ASIL-Bにおいて動作する1つ又は複数のプロセッサとして実装され得る。そのような実施例において、SI110は、より高いレベルASIL(たとえば、ASIL-D)において動作し得るので、自動車SoC104は、多数又は混合のASILにおいて動作し得る。非限定的な実例として、回路124は、1つ又は複数のディスプレイ、1つ又は複数の自動車の入力/出力(「I/O」)コントローラ、1つ又は複数のメモリ・コントローラ、1つ又は複数の相互接続などを実装するハードウェアを含み得る。図示された実施例において、回路124は、知的所有権(「IP:Intellectual property」)とそれぞれがしばしば称される、複数の論理ブロックLB(1)~LB(N)を含むこと又は実装することとして示されている。論理ブロックLB(1)~LB(N)は、自律型車両(たとえば、
図12に示される自律型車両1200)内で様々な機能を実装し得る。
【0015】
オプションの外部制御ユニット106は、コントローラ130、障害アグリゲータ132、揮発性データ・ストレージ又はメモリ136(たとえば、DRAM)、及び不揮発性データ・ストレージ又はメモリ138を含み得る。オプションの外部制御ユニット106はまた、オプションの外部制御ユニット106によって実行されるそれらの安全機能を実装する1つ又は複数の論理ブロック(図示せず)を含み得る。コントローラ130は、ASIL-Dにおいて動作する1つ又は複数のプロセッサ(たとえば、マイクロコントローラ)として実装され得る。コントローラ130は、不揮発性メモリ138に記憶された命令、たとえば、1つ又は複数の自動車オープン・システム・アーキテクチャ(「AUTOSAR:Automotive Open System Architecture」)ソフトウェア規格に準拠した命令、を実行する。命令は、障害アグリゲータ132が自動車SoC104から障害を受信するとき、適切な行動を取るようにコントローラ130に指示し得る。
【0016】
1つ又は複数の実施例において、SI110は、プロセッサ140、割り込みコントローラ141、SI障害アグリゲータ142、揮発性データ・ストレージ又はメモリ146(たとえば、スタティック・ランダム・アクセスメモリ(「SRAM:static random-access memory」)、及び1つ又は複数の論理ブロック148を含む。プロセッサ140は、プロセッサ、たとえば、高く格付けされたASIL-D安全性プロセッサ、のクラスタとして実装され得る。プロセッサ140は、起動時に不揮発性メモリ128から取得される及び揮発性メモリ146に記憶される命令149、たとえば、AUTOSARソフトウェア規格に準拠した命令、を実行する。命令149は、SI障害アグリゲータ142が自動車SoC104のその他の構成要素160から障害を受信するとき、適切な行動を取るようにプロセッサ140に指示し得る。論理ブロック148は、SI110によって実行されるそれらの安全機能を実装するのを助け得る。
【0017】
補助安全ユニット122は、リアルタイム安全性補助処理ユニットとして実装され得る及び/又はASIL-B以上に格付けされ得る。言い換えれば、補助安全ユニット122は、SoCドメイン内の他の構成要素と同じリスク分類レベルにおいて又はそれらより高いリスク分類レベルにおいて動作し得る。補助安全ユニット122は、メールボックス156と称されることになる、プロセッサ150、1つ又は複数のSoC障害アグリゲータ152、割り込みコントローラ154、及び1つ又は複数の論理ブロックを含む。SI障害アグリゲータ142及び障害アグリゲータ132(存在するとき)は、それぞれ、SoC障害アグリゲータ152から障害を受信し得る。したがって、SoC障害アグリゲータ152は、障害アグリゲータ132に1つ又は複数の障害インターフェース170を介して接続され得、SI障害アグリゲータ142に1つ又は複数の障害インターフェース172を介して接続される。障害インターフェース170及び172のそれぞれは、SoC障害アグリゲータ152のそれぞれを障害アグリゲータ132又はSI障害アグリゲータ142のそれぞれ1つに物理的に接続する接続、たとえば、ワイヤ、信号トレース、及び類似のもの、を含む。
【0018】
メールボックス156は、そこにプロセッサ150が書き込む及びそこからプロセッサ140が読み取る第1のメールボックスと、そこにプロセッサ140が書き込む及びそこからプロセッサ150が読み取る第2のメールボックスとを含み得る。メールボックス156は、メールボックス割り込みを割り込みコントローラ141に報告する及び割り込みを割り込みコントローラ141から受信するために、プロセッサ150(たとえば、ASIL-B以上に格付けされた中央処理装置(「CPU」))によって使用され得る。したがって、障害インターフェース172は、メールボックス156を割り込みコントローラ141に接続する少なくとも1つの信号導体を含む。各メールボックス割り込みは、エラーの重大性を示す重大性識別子を含む。非限定的な一実例として、重大性識別子は、最小値(たとえば、ゼロ)から最大値(たとえば、7)までの数値でもよい。別の非限定的な実例として、割り込みは、重大性を示すために先験的にエンコードされる割り込み番号を有し得る。プロセッサ140及び/又はプロセッサ150は、障害情報をメールボックス156に書き込み得る。障害情報は、障害を生成したエラーに関する情報、たとえば、エラーが生じた論理ブロック名、論理ブロック診断識別子、障害の性質、重大性識別子、及び類似のもの、を含む。
【0019】
SI110を自動車SoC104に統合することは、オプションの外部制御ユニット106もまた省略される場合に、いくつかの別個の構成要素(たとえば、揮発性メモリ136及び不揮発性メモリ138)が自動車処理システム102から省略されることを可能にし得る。しかしながら、その他の構成要素160のうちの1つ又は複数において生じる潜在的問題がSI110に悪影響を及ぼさないように、自動車SoC104のその他の構成要素160(たとえば、メインCPU複合体120、補助安全ユニット122、回路124、揮発性メモリ126及び不揮発性メモリ128)からSI110を隔離することが必要である。そのような隔離は、たとえば、自動車SoC104のその他の構成要素160のうちの1つ又は複数において生じる停電による影響をSI110が受けることを防ぐのを助け得る。その他の構成要素160のうちの1つ又は複数において生じ得る停電のタイプの非限定的な実例は、ランダム障害、クロック問題、電力問題、及び/又は電圧問題を含む。SI110が自動車SoC104のその他の構成要素160と共用する空間的近接性及び1つ又は複数のインターフェース200(
図2を参照)により、そのような停電は、SI110に移動し得、そのためにSI110が自動車SoC104に統合されたフォールバック及び/又はフェイルセーフ機能性をSI110が実行するのを妨げ得る。したがって、自動車処理システム102は、自動車SoC104とオプションの外部制御ユニット106との間のそれに相当する隔離を達成するために、SI110を自動車SoC104のその他の構成要素160から孤立させる。そのような隔離は、第1の及び第2のクロック112及び114と、第1の及び第2の電力接続118A及び118Bと、インターフェース200とによって達成される。
【0020】
第1の(SoC)クロック112は、SI110を自動車SoC104のその他の構成要素160から隔離するのを助ける第2の(SI)クロック114とは別個である(たとえば、別個の基準水晶を含む)。同様に、第1の電力接続118Aは、第2の電力接続118Bとは別個であり、SI110を自動車SoC104のその他の構成要素160から隔離するのを助ける。前述のように、SI110は、自動車SoC104のその他の構成要素160とは別個のSI電圧ドメインにおいて動作し得る。しかしながら、別個の第2の(SI)クロック114及び別個の第2の電力接続118Bででも、SI110は、自動車SoC104のその他の構成要素160とインターフェース200(
図2を参照)を介して通信する。
【0021】
論理ブロック148は、専用の第2の(SI)クロック114に接続されるクロック及びリセット回路230(
図2を参照)を含む。専用の第2の(SI)クロック114は、クロック及びリセット回路230の基準クロックとして使用され得る。たとえば、クロック及びリセット回路230は、SI110の他の機能及びデバッグ・クロックを導出するために使用される、内部専用フェーズ固定ループ(「PLL:phase-locked loop」)を含み得る。非限定的な実例として、クロック及びリセット回路230は、PLLから導出され得るデバッグ・クロック信号及びテスト・クロック信号を提供し得る。クロック及びリセット回路230は、SI110内で使用されるすべてのクロック及びリセット信号を生成し得る。言い換えれば、クロック及びリセット回路230は、SIドメイン内で使用されるクロック信号及びリセットを生成し得る。追加で又は別法として、第2の(SI)クロック114は、論理ブロック148のうちの1つ又は複数の機能クロックとして直接に使用され得る。この方式では、SI110は、ローカルに生成されるクロック信号及びリセット並びに/又は第2の(SI)クロック114によって提供されるクロック信号を使用する。その他の構成要素160からのクロック信号又はリセットは、SI110において使用されない。クロック及びリセット回路230は、その他の構成要素160内のリセットを生成する論理(たとえば、リセット・ブロック)からの摂動がSI110の構成要素に到達しないことを確実にするのを助ける。
【0022】
図2は、少なくとも1つの実施例による、自動車SoC104のその他の構成要素160とSI110を接続するインターフェース200のイラストレーションである。
図2を参照すると、インターフェース200は、自動車SoC104においてSI110の回路及び論理の論理的隔離を提供する。図示された実施例において、インターフェース200は、障害インターフェース172、揮発性メモリ・インターフェース200A、第1の制御バックボーン・インターフェース200B、第2の制御バックボーン・インターフェース200C、セキュア・コンテンツ・インターフェース200D、デバッグ・インターフェース200E、及びテスト・インターフェース200Fを含む。障害インターフェース172は、SoC障害アグリゲータ152から論理的に隔離されなくてもよいが、SI及びSoC電圧ドメインの間の電気的隔離をそれぞれ提供する1つ又は複数の電圧レベル・シフタ240をそれぞれ通過し得る又は含み得る。電圧レベル・シフタ240が、電気的隔離をそれぞれ提供する間、電圧レベル・シフタ240は、いくつかのタイプの故障、たとえば、割り込みストーム、障害ストーム、及び/又は連続的アサーション、の適切な隔離を提供しないことがある。SI障害アグリゲータ142は、障害インターフェース172を介して障害情報を受信する及びプロセッサ140によって実行される命令149にそのような故障の通知を提供する、1つ又は複数のステータス・ビット242を含み得る。図示された実施例において、ステータス・ビット242は、ステータス・ビット「BT1」、「BT2」、及び「BT3」を含む(
図4を参照)。命令149は、障害インターフェース172上で生じる停電を軽減するためにこの通知を使用するようにプロセッサ140に指示する。
【0023】
揮発性メモリ・インターフェース200Aは、自動車SoC104のプロセッサ140と揮発性メモリ126との間のインターフェースである。揮発性メモリ・インターフェース200Aは、プロセッサ140が揮発性メモリ126に情報を書き込む及び情報を揮発性メモリ126から読み取ることを可能にする。揮発性メモリ・インターフェース200Aは、揮発性メモリ126との1つ又は複数の接続、たとえば、ワイヤ、信号トレース、及び類似のもの、を含む。揮発性メモリ・インターフェース200Aは、論理的隔離制御220、アクセス・タイマ222、及びドメイン同期回路224を含み得る。論理的隔離制御220は、プロセッサ140によって選択的にロックされる及びアンロックされることが可能なゲート又はロック機構を含む。アクセス・タイマ222は、プロセッサ140によって開始されるアクセス試行がタイムアウトすることを可能にする。
【0024】
ドメイン同期回路224は、フェーズ同期回路及び電圧レベル・シフタを含む。フェーズ同期回路は、別個の第1の及び第2のクロック112及び114(
図1を参照)を使用して生成された、SI及びSoCドメインを横断して通信される信号のフェーズを同期させるのを助ける。クロック及びリセット回路230によって生成されるリセットは、SI及びSoC電圧及びクロック・ドメインを横断する任意の要素、たとえば、フェーズ同期回路、によって使用され得る。フェーズ同期回路は、別個の合成トップとしてそれぞれ機能し得る、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からポップされる)。
【0025】
揮発性メモリ・インターフェース200Aが、アンロックされるとき、プロセッサ140は、揮発性メモリ126にアクセスし得、アクセス・タイマ222を開始する。アクセス・タイマ222が第1の所定の時間量より多くが経過したことを示しており、揮発性メモリ126からの応答が受信されていないとき、プロセッサ140は、安全性障害を指示し、論理的隔離制御220を使用して揮発性メモリ・インターフェース200Aをロックし、アンロックされるインターフェース200のいずれかをオプションでロックし、自動車プラットフォーム100(
図1を参照)を安全な状態に戻すように構成された1つ又は複数の行動をオプションで取る。その一方で、アクセス・タイマ222が第1の所定の時間量が経過したことを示す前に、応答が受信されるとき、アクセス・タイマ222は、それ自体をリセットし、プロセッサ140は、アクセスを完了し、プロセッサ140は、アクセスが完了した後に、揮発性メモリ・インターフェース200Aをロックする。したがって、揮発性メモリ・インターフェース200Aは、プロセッサ140が揮発性メモリ126にアクセスしていないときには必ず、ロックされたままであり、揮発性メモリ126からSI110に進む障害及び/又は停電からSI110を保護するのを助ける。
【0026】
第1の及び第2の制御バックボーン・インターフェース200B及び200Cは、プロセッサ140と制御バックボーン210との間のインターフェースである。制御バックボーン210は、バス及び類似のものとして実装され得る。第1の制御バックボーン・インターフェース200Bは、プロセッサ140から制御バックボーン210への通信のためであり、第2の制御バックボーン・インターフェース200Cは、制御バックボーン210からプロセッサ140への通信のためである。非限定的な一実例として、プロセッサ140は、制御バックボーン210を介して自動車SoC104のその他の構成要素160(たとえば、回路124、メールボックス156、及び不揮発性メモリ128)のうちの少なくともいくつかにアクセスし得る。
【0027】
第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つ又は複数のセキュリティ・ルールを実装し、セキュリティ・ルールに基づいて各通信を許可するかブロックする。
【0028】
第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つ又は複数のセキュリティ・ルールを実装し、セキュリティ・ルールに基づいて各通信を許可するかブロックする。
【0029】
セキュア・コンテンツ・インターフェース200Dは、プロセッサ140とセキュア・コンテンツ回路212との間のインターフェースである。セキュア・コンテンツ・インターフェース200Dは、プロセッサ140が命令及び/又は情報(たとえば、安全な及び/又は機密内容)をセキュア・コンテンツ回路212から受信することを可能にする。セキュア・コンテンツ・インターフェース200Dは、論理的隔離制御220及びドメイン同期回路224を含み得る。セキュア・コンテンツ・インターフェース200Dの論理的隔離制御220は、揮発性メモリ・インターフェース200Aの論理的隔離制御220と実質的に同じであり、実質的に同じに機能する。したがって、セキュア・コンテンツ・インターフェース200Dの論理的隔離制御220は、プロセッサ140がセキュア・コンテンツ・インターフェース200Dをロックする及びアンロックすることを可能にする。セキュア・コンテンツ・インターフェース200Dのドメイン同期回路224は、揮発性メモリ・インターフェース200Aのドメイン同期回路224と実質的に同じであり、実質的に同じに機能する。
【0030】
デバッグ・インターフェース200Eは、プロセッサ140とデバッグ回路214との間のインターフェースである。デバッグ・インターフェース200Eは、プロセッサ140が命令及び/又は情報をデバッグ回路214から受信することを可能にする。デバッグ・インターフェース200Eは、論理的隔離制御220及びドメイン同期回路224を含み得る。デバッグ・インターフェース200Eの論理的隔離制御220は、揮発性メモリ・インターフェース200Aの論理的隔離制御220と実質的に同じであり、実質的に同じに機能する。したがって、デバッグ・インターフェース200Eの論理的隔離制御220は、プロセッサ140がデバッグ・インターフェース200Eをロックする及びアンロックすることを可能にする。デバッグ・インターフェース200Eのドメイン同期回路224は、揮発性メモリ・インターフェース200Aのドメイン同期回路224と実質的に同じであり、実質的に同じに機能する。前述のように、SI110及びその他の構成要素160は、別個のクロック・ドメインにおいて動作する。1つ又は複数の実施例において、自動車SoC104のその他の構成要素160のうちの1つ又は複数、たとえば、デバッグ回路214、の外部クロックからの信号は、SI110に供給しない。自動車SoC104によって実行されるデバッグ機能は、自動車SoC104によって実行されるデバッグ機能をSI110及び/又は第2の(SI)クロック114によって生成されるデバッグ・クロック信号を使用することに切り替える又は変換する、デバッグ・インターフェース200Eのドメイン同期回路224を介するデバッグ・クロック信号を受信する。デバッグ論理は、SI110がミッション・モードにある間(たとえば、車両が運転しているとき)、使用されないので、SI110は、デバッグ・クロック信号によって潜在的に引き起こされ得るいかなる干渉も防ぐために、デバッグ・クロック上に第1のクロック・ゲートを含む。非限定的な一実例として、第1のクロック・ゲートは、クロック及びリセット回路230の構成要素でもよい。第1のクロック・ゲートは、プロセッサ140によって設定される第1の構成ビットを使用して、制御され得る(たとえば、選択的にスイッチを入れられる、及び切られる)。
【0031】
テスト・インターフェース200Fは、プロセッサ140とテスト回路216との間のインターフェースである。テスト・インターフェース200Fは、プロセッサ140が命令及び/又は情報をテスト回路216から受信することを可能にする。テスト・インターフェース200Fは、論理的隔離制御220及びドメイン同期回路224を含み得る。テスト・インターフェース200Fの論理的隔離制御220は、揮発性メモリ・インターフェース200Aの論理的隔離制御220と実質的に同じであり、実質的に同じに機能する。したがって、テスト・インターフェース200Fの論理的隔離制御220は、プロセッサ140がテスト・インターフェース200Fをロックする及びアンロックすることを可能にする。テスト・インターフェース200Fのドメイン同期回路224は、揮発性メモリ・インターフェース200Aのドメイン同期回路224と実質的に同じであり、実質的に同じに機能する。前述のように、自動車SoC104のその他の構成要素160のうちの1つ又は複数、たとえば、テスト回路216、からの外部信号は、この構成を介してSI110に供給されることを防がれる。自動車SoC104によって実行されるテスト機能は、自動車SoC104によって実行されるテスト機能をSI110及び/又は第2の(SI)クロック114によって生成されるテスト・クロック信号を使用することに切り替える又は変換する、デバッグ・インターフェース200Eのドメイン同期回路224を介するテスト・クロック信号を受信する。テスト論理は、SI110がミッション・モードにある間(たとえば、車両が運転しているとき)、使用されないので、SI110は、テスト・クロック信号によって潜在的に引き起こされ得るいかなる干渉も防ぐために、テスト・クロック上に第2のクロック・ゲートを含む。非限定的な一実例として、第2のクロック・ゲートは、クロック及びリセット回路230の構成要素でもよい。第2のクロック・ゲートは、プロセッサ140によって設定される第2の構成ビットを使用して、制御され得る(たとえば、選択的にスイッチを入れられる、及び切られる)。
【0032】
SI110は、少なくとも2つのモードの動作、隔離又はコクーン・モード及び非隔離モード、を有し得る。SI110が、コクーン・モードで動作しているとき、SI110に入ることを許可された自動車SoC104からの情報のみが、障害インターフェース172を介してSI110に入る、障害情報である。この方式では、SI障害アグリゲータ142は、自動車SoC104及びSI110の累積健全性状態を保持する。その一方で、SI110が、非隔離モードで動作しているとき、情報は、インターフェース200のうちの1つ又は複数を介してSI110に入り得る。SI110がコクーン・モードで動作しているか非隔離モードで動作しているかは、プロセッサ140によって実行される命令149によって少なくとも部分的に及びインターフェース200によって少なくとも部分的に決定される。
【0033】
自動車SoC104のその他の構成要素160に由来する潜在的安全重視の問題がインターフェース200のうちの1つ又は複数を介してSI110に達するのを防ぐのを助けるために、インターフェース200のそれぞれは、プロセッサ140によって選択的にロックされる及びアンロックされる別個の論理的隔離制御220を含む。論理的隔離制御220のロック機構が、プロセッサ140によってロックされるとき、ロック機構は、ロックされたインターフェースを介する自動車SoC104とSI110との間のすべての通信を防ぐ。その一方で、インターフェースは、アンロックされたインターフェースを介するそのような通信を可能にするために、プロセッサ140によってアンロックされ得る。したがって、プロセッサ140は、SI110をコクーン・モード又は非隔離モードに選択的に置き得る。すべてのインターフェース200がロックされるときにはいつでも、プロセッサ140は、揮発性メモリ126又は不揮発性メモリ128にアクセスすることはできず、SI110内に存在する揮発性メモリ146(たとえば、SRAM)に記憶された命令149を実行する。
【0034】
ここで
図3を参照すると、本明細書に記載の方法300の各ブロックは、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組合せを使用して実行され得る計算プロセスを含む。たとえば、様々な機能が、メモリ(たとえば、
図1、2、及び4に示される揮発性メモリ146)に記憶された命令(たとえば、
図1、2、及び4に示される命令149)を実行するプロセッサ(たとえば、
図1、2、及び4に示されるプロセッサ140)によって、実施され得る。方法300はまた、コンピュータ記憶媒体に記憶されたコンピュータ使用可能命令として実施され得る。方法300は、いくつか例を挙げると、独立型アプリケーション、サービス若しくはホスト型サービス(独立型の若しくは別のホスト型サービスと組み合わせた)、又は別の製品へのプラグインによって、提供され得る。加えて、方法300は、例として、
図1の自動車プラットフォーム100に関して説明されている。しかしながら、方法300は、追加で又は別法として、本明細書に記載のものを含むがこれらに限定されない、任意の1つのシステム又は任意の組合せのシステムによって、実行され得る。
【0035】
図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を介して生じ得、自動車SoC104のその他の構成要素160によって開始される通信をSI110が受信することをそれぞれ可能にする。前述のように、通信は、SI110がコクーン・モードにあるか非隔離モードにあるかとは無関係に、障害インターフェース172(
図2を参照)を介して生じる。
【0036】
プロセッサ140が、自動車SoC104のその他の構成要素160のうちの特定の1つと通信する必要があるときにはいつでも、プロセッサ140は、それを行おうと試みる前に、その特定の構成要素と通信することが安全であるという決定を行う。この決定を行うために、ブロック304において、プロセッサ140は、SI110の外部のSoC障害アグリゲータ152から、障害インターフェース172(
図2を参照)を介して、障害情報を受信する、SI障害アグリゲータ142の内容をチェックし得る。前述のように、障害インターフェース172は、SoC障害アグリゲータ152から論理的に隔離されないが、SI及びSoC電圧ドメインの間の電気的隔離を提供する電圧レベル・シフタ240をそれぞれ通過する又は含む。
【0037】
決定ブロック306において、プロセッサ140は、任意の障害がSI障害アグリゲータ142において検出されたかどうかを決定する。決定ブロック306における決定は、少なくとも1つの障害が検出されたとき、その他の構成要素160のうちの1つ又は複数について識別された障害がSoC障害アグリゲータ152によってSI障害アグリゲータ142に報告されたことを意味する、「はい」である。プロセッサ140は、SI障害アグリゲータ142内でステータス・ビット242を使用して、障害を検出し得る。ステータス・ビット242は、自動車SoC104の健全性を追跡するものとして特徴を示され得る。別法として、SI障害アグリゲータ142は、割り込みをプロセッサ140に送ることによって、障害をプロセッサ140に通知し得る。さもなければ、決定ブロック306における決定は、障害が検出されないとき、「いいえ」である。
【0038】
決定ブロック306における決定が、「はい」であるとき、ブロック308において、プロセッサ140は、1つ又は複数の修正行動を取り得る。修正行動は、車両を安全な状態にするのを助け得る。非限定的な実例として、そのような修正行動は、車両のブレーキを適用すること、車両を減速すること、路肩まで車両を走らせること、及び類似のことを含み得る。次いで、プロセッサ140は、ブロック304に戻り得る。
【0039】
決定ブロック306における決定が「いいえ」であるとき、ブロック310において、プロセッサ140は、特定のインターフェースのロック機構がロックされた場合、特定の構成要素に接続されたインターフェース200のうちの特定の1つの論理的隔離制御220のロック機構をアンロックする。言い換えれば、プロセッサ140は、SI障害アグリゲータ142が障害を記憶していないとき、特定のインターフェースを介して自動車SoC104の特定の構成要素にアクセスすることは安全であると決定し得る。したがって、プロセッサ140は、ブロック310において特定のインターフェースをアンロックする。
【0040】
次いで、ブロック312において、プロセッサ140は、アンロックされた特定のインターフェースを介して特定の構成要素に通信を送り得る又はそこから通信を受信し得、特定のインターフェースのアクセス・タイマ222を自動的に開始する。特定のインターフェースが、アンロックされるとき、プロセッサ140は、自動車SoC104への1つ又は複数の強く順序付けられたアクセス(1度に1つ)を開始し得る。アクセス・タイマ222は、アクセスごとに自動的に開始する。したがって、アクセス・タイマ222は、特定のアクセスがプロセッサ140によって開始されるとすぐに、カウント・ダウンを開始し得る。
【0041】
決定ブロック314において、プロセッサ140は、タイムアウトが生じたかどうかを決定する。アクセス・タイマ222が、第1の所定の時間量より多くが経過したことを示しており、特定の構成要素からの応答が受信されていないとき、決定ブロック314における決定は、「はい」である。さもなければ、第1の所定の時間量より多くが経過したことをアクセス・タイマ222が示す前に応答が特定の構成要素から受信されるとき、決定ブロック314における決定は、「いいえ」である。
【0042】
決定ブロック314における決定が、「はい」であるとき、ブロック316において、プロセッサ140は、安全性障害が生じたということを示す。次いで、ブロック318において、プロセッサ140は、特定のインターフェースの論理的隔離制御220のロック機構をロックし、オプションで、アンロックされるその他のインターフェースのうちのいずれかの論理的隔離制御220のロック機構をロックし、オプションで、自動車プラットフォーム100を安全な状態に戻すように構成された1つ又は複数の行動を取る。
【0043】
その一方で、決定ブロック314における決定が、「いいえ」であるとき、ブロック320において、プロセッサ140は、通信を完了する。アクセス・タイマ222は、自動的にリセットする。次いで、ブロック318において、プロセッサ140は、特定のインターフェースのロック機構をロックする。したがって、方法300は、プロセッサ140が自動車SoC104のその他の構成要素160のうちの1つにアクセスしていないときにはいつでも、インターフェース200がロックされたままであることを確実にする。次いで、方法300は、終了する。
【0044】
SI110は、自動車SoC104がブートされるとき、共用される不揮発性メモリ128からそれの内部揮発性メモリ146に命令149(たとえば、システムを安全な状態にする重大な命令)をコピーすることによって、共用される不揮発性メモリ128にアクセスすることを回避し得る。SI110が、車両運転サイクルを可能にする、ミッション・モードに入る前に、プロセッサ140は、命令149を認証及び検証し得る。SI110は、同時にミッション・モード及びコクーン・モード若しくは非隔離モードのいずれかで動作し得る。命令149は、揮発性メモリ146に残り、プロセッサ140が共用不揮発性メモリ128にアクセスすることを回避することを可能にする。非重大データ、たとえば、アプリケーション・コード、融合データ、及び類似のもの、は、SI110に含まれる内部直接メモリ・アクセス(「DMA:direct memory access」)エンジン402(
図4を参照)を使用して、共用揮発性メモリ126から取得され得る。DMAエンジン402は、オプションで、プロセッサ140の構成要素でもよい。共用揮発性メモリ126から取得されるデータをページングする間にDMAエンジン402が故障しても、プロセッサ140は、揮発性メモリ146に記憶された命令149を実行し続けることになるので、DMAエンジン402の故障は、プロセッサ140に悪影響を及ぼさないことになる。
【0045】
図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つ又は複数の行動を取り得る。第1に、オプションの外部制御ユニット106は、障害を取り除き得る。第2に、オプションの外部制御ユニット106は、修正行動を取り得る。第3に、オプションの外部制御ユニット106は、外部システム(たとえば、1つ又は複数の外部マイクロコントローラ、1つ又は複数の外部エージェント、及び類似のもの)に通知し得る。しかしながら、前述のように、いくつかの実施例において、オプションの外部制御ユニット106は、省略され得る。
【0046】
図1を参照すると、前述のように、SI110が、自動車SoC104のその他の構成要素160から隔離されている間、少なくともいくつかの通信が、SI110と自動車SoC104のその他の構成要素160との間で有効にされなければならない。具体的には、自動車SoC104の論理ブロックLB(1)からLB(N)において生じる障害は、障害インターフェース172を介してSI110に通信されなければならない。そのような通信を提供する1つの方法は、第1の障害アグリゲータ260-1から260-N(
図4を参照)にSI110へ直接に第1の集計された障害信号を送らせることになろう。それを行うことは、自動車SoC104のその他の構成要素160からのSI110の隔離によって複雑にされる、SI110と第1の障害アグリゲータ260-1から260-Nのそれぞれとの間の別個の伝送線又は信号導体を障害インターフェース172が含むことを必要とする。たとえば、
図2を参照すると、電圧レベル・シフタ240は、各信号導体のための別個の電圧レベル・シフタを含なければならないことになろう。さらに、SI110と自動車SoC104のその他の構成要素160との間の信号導体の数が多いほど、SI110は自動車SoC104に起因する干渉に対してより脆弱になる。
【0047】
その代わりとして、
図4を参照すると、SoC障害アグリゲータ152のそれぞれは、3つの信号導体によってSI110に接続され得る:(1)修正済みエラー信号導体410、(2)未修正エラー信号導体412、及び(3)SoC障害アグリゲータ信号導体414。この配置は、導体が電気的干渉を引き起こすほど多くの導体を障害インターフェース172が含むことなしに並びに障害インターフェース172をそれ/それらが自動車SoC104及び/又はSI110において混雑を引き起こすほど大きくせずに障害インターフェース172が論理ブロックLB(1)からLB(N)からSI110に障害を報告することを可能にし得る。信号導体410、412、及び414は、それぞれに、ステータス・ビット「BT1」、「BT2」、及び「BT3」を設定し得、それぞれのステータス・ビットは、設定された後、プロセッサ140によってその後に取り除かれ得る。
【0048】
メールボックス156は、メールボックス割り込み信号導体416によってSI110の割り込みコントローラ141に接続され得る。信号導体410~416は、ワイヤ、信号トレース、及び類似のものとしてそれぞれ実装され得る。
【0049】
図5Aは、本開示のいくつかの実施例による、SI110(
図1、2、4、8、及び10を参照)に障害を通信するための方法500を示す流れ図である。ここで
図5Aを参照すると、本明細書に記載される、方法500の各ブロックは、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組合せを使用して実行され得る計算プロセスを含む。たとえば、様々な機能が、メモリに記憶された命令を実行するプロセッサ(たとえば、
図1及び4に示すプロセッサ150)によって実施され得る。方法500の少なくとも部分は、コンピュータ記憶媒体に記憶されたコンピュータ使用可能命令として実施され得る。方法500は、いくつか例を挙げると、独立型アプリケーション、サービス若しくはホスト型サービス(独立型の若しくは別のホスト型サービスと組み合わせた)、又は別の製品へのプラグインによって提供され得る。加えて、方法500は、例として、
図1の自動車プラットフォーム100に関して説明されている。しかしながら、方法500は、追加で又は別法として、本明細書に記載のものを含むがこれらに限定されない、任意の1つのシステム、又は任意の組合せのシステムによって実行され得る。
【0050】
図解を容易にするために、方法500は、SoC障害アグリゲータ152(
図1、2、及び4を参照)のうちの特定の1つによって実行されるものとして説明されることになる。言い換えれば、方法500は、ハードウェアによって実行され得る。
図5Aを参照すると、第1のブロック502において、特定のSoC障害アグリゲータが、第1の障害アグリゲータ260-1から260-N(
図2及び4を参照)の少なくとも一部分から第1の集計された障害信号を受信する。
【0051】
ブロック506において、特定のSoC障害アグリゲータが、修正済みエラー信号へと修正されたエラーによって引き起こされる障害を識別する第1の集計された障害信号のそれらを集計する。次いで、ブロック508において、特定のSoC障害アグリゲータが、修正済みエラー信号をSI110(
図1、2、4、8、及び10を参照)に修正済みエラー信号導体410(
図4を参照)を介して送信する。ブロック510において、特定のSoC障害アグリゲータが、割り込みを補助安全ユニット122(
図1及び4を参照)のプロセッサ150(
図1及び4を参照)に転送する、各修正済みエラーの割り込み制御154(
図1及び4を参照)に割り込みを送る。各割り込みは、プロセッサ150に割り込みに関連する修正済みエラーを通知する。
【0052】
ブロック512において、特定のSoC障害アグリゲータが、修正済みエラー信号において識別された第1の修正済みエラーの修正済みエラー・タイマ420C(
図4を参照)を開始させる。
【0053】
決定ブロック514において、特定のSoC障害アグリゲータが、第1の修正済みエラーが特定のSoC障害アグリゲータから取り除かれたかどうかを決定する。修正済みエラー・タイマ420C(
図4を参照)が、第2の所定の時間量より多くが経過したということを示すよりも前に、第1の修正済みエラーが取り除かれたとき、決定ブロック514における決定は、「はい」である。さもなければ、決定ブロック514における決定は、「いいえ」である。決定ブロック514における決定が、「はい」であるとき、ブロック515において、その特定のSoC障害アグリゲータは、行動を取らない。その一方で、決定ブロック514における決定が、「いいえ」であるとき、その特定のSoC障害アグリゲータは、決定ブロック516に進む。
【0054】
決定ブロック516において、プロセッサ150は、修正済みエラー・タイマ420Cがタイムアウトした又は満了したことを意味する、第2の所定の時間量より多くが経過したということを修正済みエラー・タイマ420C(
図4を参照)が示すかどうかを決定する。第2の所定の時間量が経過したとき、決定ブロック516における決定は、「はい」である。さもなければ、決定ブロック516における決定は、「いいえ」である。決定ブロック516における決定が、「はい」であるとき、特定のSoC障害アグリゲータは、ブロック518に進む。さもなければ、決定ブロック516における決定が「いいえ」であるとき、特定のSoC障害アグリゲータは、決定ブロック514に戻って、第1の修正済みエラーがプロセッサ150によって取り除かれるのを待つ。したがって、特定のSoC障害アグリゲータは、第1の修正済みエラーが取り除かれたかどうか及び修正済みエラー・タイマ420Cが満了したかどうかを監視し続ける。第1の修正済みエラーが、修正済みエラー・タイマ420Cが満了する前に取り除かれる場合、特定のSoC障害アグリゲータは、ブロック515において行動を取らない。その一方で、修正済みエラー・タイマ420Cが、第1の修正済みエラーが取り除かれる前に、満了する場合、特定のSoC障害アグリゲータは、ブロック518に進む。ブロック518において、特定のSoC障害アグリゲータは、SoC障害アグリゲータ信号導体414(
図4を参照)を介してSoC障害アグリゲータ信号をSI110(
図1、2、4、8、及び10を参照)に送信する。
【0055】
ブロック520において、特定のSoC障害アグリゲータが、未修正エラー信号に修正されなかったエラーによって引き起こされる障害を識別するブロック502において受信される第1の集計された障害信号のそれらを集計する。次いで、ブロック522において、特定のSoC障害アグリゲータが、未修正エラー信号を未修正エラー信号導体412(
図4を参照)を介してSI110(
図1、2、4、8、及び10を参照)に送信する。ブロック524において、特定のSoC障害アグリゲータが、補助安全ユニット122(
図1及び4を参照)のプロセッサ150(
図1及び4を参照)に割り込みを転送する、各未修正エラーの割り込み制御154(
図1及び4を参照)に割り込みを送る。各割り込みは、割り込みに関連する未修正エラーをプロセッサ150に通知する。
【0056】
ブロック526において、特定のSoC障害アグリゲータが、未修正エラー信号において識別される第1の未修正エラーの未修正エラー・タイマ420U(
図4を参照)を開始させる。
【0057】
決定ブロック528において、特定のSoC障害アグリゲータが、第1の未修正エラーが特定のSoC障害アグリゲータから取り除かれたかどうかを決定する。未修正エラー・タイマ420U(
図4を参照)が、第3の所定の時間量より多くが経過したということを示すより前に、第1の未修正エラーが取り除かれたとき、決定ブロック528における決定は、「はい」である。さもなければ、決定ブロック528における決定は、「いいえ」である。決定ブロック528における決定が、「はい」であるとき、ブロック529において、その特定のSoC障害アグリゲータは、行動を取らない。決定ブロック528における決定が、「いいえ」であるとき、その特定のSoC障害アグリゲータは、決定ブロック530に進む。
【0058】
決定ブロック530において、プロセッサ150は、未修正エラー・タイマ420Uが、未修正エラー・タイマ420U(
図4を参照)がタイムアウトした又は満了したことを意味する、第3の所定の時間量より多くが経過したということを示すかどうかを決定する。第3の所定の時間量が経過したとき、決定ブロック530における決定は、「はい」である。さもなければ、決定ブロック530における決定は、「いいえ」である。決定ブロック530における決定が、「はい」であるとき、特定のSoC障害アグリゲータは、ブロック532に進む。その一方で、決定ブロック530における決定が、「いいえ」であるとき、特定のSoC障害アグリゲータは、決定ブロック528に戻って、第1の未修正エラーがプロセッサ150によって取り除かれるのを待つ。したがって、特定のSoC障害アグリゲータは、第1の未修正エラーが取り除かれたかどうか及び未修正エラー・タイマ420Uが満了したかどうかを監視し続ける。第1の未修正エラーが、未修正エラー・タイマ420Uが満了する前に、取り除かれる場合、特定のSoC障害アグリゲータは、ブロック529において行動を取らない。その一方で、未修正エラー・タイマ420Uが、第1の未修正エラーが取り除かれる前に、満了する場合、特定のSoC障害アグリゲータは、ブロック532に進む。ブロック532において、特定のSoC障害アグリゲータは、SoC障害アグリゲータ信号導体414(
図4を参照)を介してSoC障害アグリゲータ信号をSI110(
図1、2、4、8、及び10を参照)に送信する。この時点で、方法500は、終了する。
【0059】
図5Bは、本開示のいくつかの実施例による、プロセッサ150(
図1及び4を参照)がSoC障害アグリゲータ152(
図1、2、及び4を参照)から受信された割り込みを処理するために使用し得る方法540を示す流れ図である。ここで
図5Bを参照すると、本明細書に記載される、方法540の各ブロックは、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組合せを使用して実行され得る計算プロセスを含む。たとえば、様々な機能が、メモリに記憶された命令を実行するプロセッサ(たとえば、プロセッサ150)によって、実施され得る。方法540の少なくとも部分が、コンピュータ記憶媒体に記憶されたコンピュータ使用可能命令として実施され得る。方法540は、いくつか例を挙げると、独立型アプリケーション、サービス若しくはホスト型サービス(独立型の若しくは別のホスト型サービスと組み合わせた)、又は別の製品へのプラグインによって提供され得る。加えて、方法540は、例として、
図1の自動車プラットフォーム100に関して説明される。しかしながら、方法540は、追加で又は別法として、本明細書に記載のものを含むがこれらに限定されない、任意の1つのシステム、又は任意の組合せのシステムによって実行され得る。
【0060】
図解を容易にするために、方法540は、プロセッサ150(
図1及び4を参照)によって実行されるものとして説明されることになる。
図5Bを参照すると、第1のブロック541において、プロセッサ150が、SoC障害アグリゲータ152のうちの特定の1つから特定の割り込みを受信する。次いで、ブロック542において、プロセッサ150が、特定の割り込みにおいて識別される1つ又は複数のエラーをトリアージし、エラーに対処するための1つ又は複数の修正行動を取り得る。
【0061】
プロセッサ150がエラーをトリアージしている及び/又は修正行動を取っている間に問題が生じる場合、プロセッサ150は、特定の割り込みを処理し続けることができないことがある。これが生じるとき、決定ブロック543における決定は、「はい」であり、ブロック544において、プロセッサ150は、特定の割り込みに関するさらなる行動を取らない。その一方で、プロセッサ150が、特定の割り込みをトリアージすることができ、オプションで修正行動を取る場合、決定ブロック543における決定は、「いいえ」である。決定ブロック543における決定が「いいえ」であるとき、ブロック545において、プロセッサ150は、特定の割り込みに関連する情報を、プロセッサ140によって読み取られ得る、メールボックス156に書き込む。次に、ブロック546において、プロセッサ150は、メールボックス割り込み信号導体416を介して割り込みコントローラ141にメールボックス割り込みを送る。メールボックス割り込みは、ブロック541において受信される割り込みにおいて識別されるエラーの重大性を示す。
【0062】
次いで、決定ブロック547において、プロセッサ150は、プロセッサ150が特定のSoC障害アグリゲータから特定の割り込みがそのために生成された障害を取り除くべきかどうかを決定する。プロセッサ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は、終了する。
【0063】
図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つのシステム、又は任意の組合せのシステムによって実行され得る。
【0064】
図解を容易にするために、方法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に修正済みエラーを知らせる。
【0065】
決定ブロック556において、プロセッサ140(
図1、2、及び4を参照)は、メールボックス割り込みがメールボックス割り込み信号導体416を介してプロセッサ150(
図1及び4を参照)から受信されたかどうかを決定する。メールボックス割り込みが受信されるとき、メールボックス割り込みは、修正済みエラーの重大性を示す。プロセッサ140がメールボックス割り込みを受信したとき、決定ブロック556における決定は、「はい」である。さもなければ、決定ブロック556における決定は、「いいえ」である。決定ブロック556における決定が「いいえ」であるとき、ブロック558において、プロセッサ140は、メールボックス割り込みかSoC障害アグリゲータ信号を受信するのを待つ。決定ブロック556における決定が、「はい」であるとき、プロセッサ140は、決定ブロック560に進む。
【0066】
決定ブロック560において、プロセッサ140(
図1、2、及び4を参照)は、メールボックス156を読み取るかどうかを決定する。この決定は、メールボックス割り込みによってプロセッサ140に通信される修正済みエラーの重大性に少なくとも部分的に基づき得る。たとえば、プロセッサ140は、修正済みエラーの重大性が閾値(たとえば、7)以上である場合にはメールボックス156を読み取らないことを決定し得、修正済みエラーの重大性が閾値未満である場合にはメールボックス156を読み取ることを決定し得る。決定ブロック560における決定が、「はい」であるとき、ブロック562において、プロセッサ140は、メールボックス156を読み取る。次いで、プロセッサ140は、ブロック564に進み、そこで、プロセッサ140は、たとえば、ステータス・ビット「BT1」の設定を解除することによって、修正済みエラーを取り除く。決定ブロック560における決定が「いいえ」であるとき、プロセッサ140は、ブロック564に進み、たとえば、ステータス・ビット「BT1」の設定を解除することによって、修正済みエラーを取り除く。プロセッサ140は、プロセッサ140が修正済みエラーをSI障害アグリゲータ142から取り除く前に、修正済みエラーに対応する障害が特定のSoC障害アグリゲータから取り除かれたというプロセッサ150からの通知を待ち得る。しかしながら、エラーは修正されたので、いくつかの実施例において、プロセッサ140は、そのような通知を最初に受信せずに、修正済みエラーを単純に取り除き得る。
【0067】
SI障害アグリゲータ142が、未修正エラー信号導体412上で未修正エラー信号を受信するとき、ブロック566において、SI障害アグリゲータ142は、割り込みをプロセッサ140の割り込みコントローラ141(
図1、2、及び4を参照)に送る。この割り込みは、プロセッサ140に未修正エラーを知らせる。
【0068】
決定ブロック568において、プロセッサ140(
図1、2、及び4を参照)は、メールボックス割り込みがメールボックス割り込み信号導体416を介してプロセッサ150(
図1及び4を参照)から受信されたかどうかを決定する。メールボックス割り込みが受信されるとき、メールボックス割り込みは、未修正エラーの重大性を示す。プロセッサ140が、メールボックス割り込みを受信したとき、決定ブロック568における決定は、「はい」である。さもなければ、決定ブロック568における決定は、「いいえ」である。決定ブロック568における決定が、「いいえ」であるとき、ブロック558において、プロセッサ140は、メールボックス割り込みかSoC障害アグリゲータ信号のいずいれかを受信するのを待つ。決定ブロック568における決定が、「はい」であるとき、プロセッサ140は、決定ブロック570に進む。
【0069】
決定ブロック570において、プロセッサ140(
図1、2、及び4を参照)は、メールボックス156を読み取るかどうかを決定する。この決定は、未修正エラーの重大性に少なくとも部分的に基づき得る。たとえば、プロセッサ140は、未修正エラーの重大性が閾値(たとえば、7)以上である場合にはメールボックス156を読み取らないことを決定し得、修正済みエラーの重大性が閾値未満である場合にはメールボックス156を読み取ることを決定し得る。決定ブロック570における決定が、「はい」であるとき、ブロック572において、プロセッサ140は、メールボックス156を読み取る。次いで、プロセッサ140は、決定ブロック573に進む。決定ブロック570における決定が、「いいえ」であるとき、プロセッサ140は、ブロック573に進む。
【0070】
決定ブロック573において、プロセッサ140は、1つ又は複数の修正行動を取るかどうかを決定する。決定ブロック573における決定が、「はい」であるとき、ブロック574において、プロセッサ140は、修正行動、たとえば、車両のブレーキを適用すること、を取る。次いで、プロセッサ140は、決定ブロック575に進む。
【0071】
決定ブロック573における決定が、「いいえ」であるとき、プロセッサ140は、決定ブロック575に進む。決定ブロック575において、プロセッサ140は、外部システム404に通知するかどうかを決定する。決定ブロック575における決定が、「はい」であるとき、ブロック576において、プロセッサ140は、外部システム404に通知し、ブロック578に進む。決定ブロック575における決定が、「いいえ」であるとき、プロセッサ140は、ブロック578に進む。
【0072】
ブロック578において、プロセッサ140は、メールボックス割り込みをメールボックス156に送る及び/又は、たとえば、ステータス・ビット「BT2」の設定を解除することによって、未修正エラーを取り除く。オプションで、プロセッサ140は、障害情報をメールボックス156に書き込み得る。プロセッサ140は、プロセッサ140がSI障害アグリゲータ142から未修正エラーを取り除く前に、未修正エラーに対応する障害が特定のSoC障害アグリゲータから取り除かれたというプロセッサ150からの通知を待ち得る。次いで、方法550は、終了する。メールボックス割り込みが、プロセッサ150によって受信され、プロセッサ150は未修正エラーに対応する障害を取り除くべきかどうかを決定するときに決定ブロック547(
図5Bを参照)において使用され得る。プロセッサ150は、オプションで、この決定を行う前に、プロセッサ140によってメールボックス156に書き込まれた障害情報を読み取り得る。
【0073】
図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つのシステム、又は任意の組合せのシステムによって実行され得る。
【0074】
図解を容易にするために、方法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障害アグリゲータ信号を受信する。
【0075】
図5Dにおいて破線で示された矢印によって示されるように、SI障害アグリゲータ142(
図1、2、及び4を参照)が、SoC障害アグリゲータ信号を受信するとき、SI110のSoCエラー処理回路422(
図4を参照)は、自動的にブロック584に進み得、SoCエラーを含むSoCエラー信号を接続406(
図4を参照)を介して外部システム404(
図4を参照)に自動的に送り得る。別法として、SoCエラー処理回路422は、ブロック586に進み得、SoC障害タイマ424(
図4を参照)を開始し得る。SoC障害タイマ424は、SoC障害アグリゲータ信号が受信されたときと外部システム404が通知されるときとの間の遅延をもたらし得る。SoC障害タイマ424が実行しているとき、プロセッサ140は、1つ又は複数の修正行動を取り得る。修正行動が成功する場合、プロセッサ140は、ステータス・ビット「BT2」の設定を解除することによって未修正エラーを取り除き得、ステータス・ビット「BT3」の設定を解除することによってSoC障害アグリゲータ・エラーを取り除き得る。SoC障害アグリゲータ・エラーを取り除くことは、SoC障害タイマ424を停止する。プロセッサ140は、プロセッサ140がSI障害アグリゲータ142から未修正エラーを取り除く前に、未修正エラーに対応する障害が特定のSoC障害アグリゲータから取り除かれたというプロセッサ150からの通知を待ち得る。
【0076】
SoC障害タイマ424が開始された後、決定ブロック588において、SoCエラー処理回路422は、SoC障害タイマ424が第4の所定の時間量より多くが経過したことを示すかどうかを決定する。SoC障害タイマ424が第4の所定の時間量より多くが経過したことを示しており、SoC障害アグリゲータ・エラーが取り除かれていないとき、決定ブロック588における決定は、「はい」である。その一方で、SoC障害タイマ424が、第4の所定の時間量より多くが経過したことを示す前に、SoC障害アグリゲータ・エラーが取り除かれたとき、決定ブロック588における決定は、「いいえ」である。
【0077】
決定ブロック588における決定が、「いいえ」であるとき、ブロック590において、SoCエラー処理回路422は、SoC障害タイマ424が第4の所定の時間量より多くが経過したことを示すのを待つ。その一方で、決定ブロック588における決定が、「はい」であるとき、ブロック584において、SoCエラー処理回路422は、第1の未修正エラーが取り除かれなかった及びSoC障害アグリゲータ・エラーがアサートされたことを示す外部システム404(
図4を参照)への接続406(
図4を参照)を介するSoCエラーを含むSoCエラー信号を送信する。SoC障害タイマ424は、SoCエラーが送られるとき、自動的に停止する及び/又はリセットする。別法として、SoCエラー処理回路422は、SoC障害タイマ424をリセットし得る、又はSoC障害タイマ424は、SoCエラー処理回路422が行動を取らずに、単純に満了し得る。
【0078】
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は、修正行動を取る。
【0079】
次いで、ブロック598において、プロセッサ140は、メールボックス割り込みをメールボックス156に送る及び/又は、たとえば、ステータス・ビット「BT3」の設定を解除することによって、SoC障害アグリゲータ・エラーを、及びステータス・ビット「BT2」の設定を解除することによって未修正エラーを取り除く。SoC障害アグリゲータ・エラーを取り除くことは、SoC障害タイマ424を停止する。メールボックス156に送られるメールボックス割り込みは、未修正エラーが取り除かれた及び/又はブロック597においてプロセッサ140が修正行動を取ったことを示し得る。オプションで、プロセッサ140は、障害情報をメールボックス156に書き込み得る。プロセッサ140は、プロセッサ140がSoC障害アグリゲータ・エラー及び未修正エラーをSI障害アグリゲータ142から取り除く前に、未修正エラーに対応する障害が特定のSoC障害アグリゲータから取り除かれたというプロセッサ150からの通知を待ち得る。次いで、方法580は、終了する。メールボックス割り込みが、未修正エラーに対応する障害を取り除き得る、プロセッサ150によって受信される。プロセッサ150は、オプションで、障害を取り除く前に、プロセッサ140によってメールボックス156に書き込まれた障害情報を読み取り得る。
【0080】
図5A~5Dにおいて、自動車SoC104は、プロセッサ150を含む。少なくともいくつかの実施例において、プロセッサ150は、省略され得る。そのような実施例において、方法540は、実行されないことになる。各障害で、特定のSoC障害アグリゲータが、SoC障害アグリゲータ・エラーを生成し、SI障害アグリゲータ142に送ることになる(ブロック518及び532)。プロセッサ150は存在しないので、メールボックス割り込みは、割り込みコントローラ141に送信されないことになり、したがって、プロセッサ140が行動する前に、プロセッサ140は、SoC障害アグリゲータ信号を待つことになる(
図5Cのブロック558)。次いで、SoC障害アグリゲータ・エラーが、受信される(
図5Dのブロック582)とき、SI110は、その他の構成要素160に踏み込んで、方法550(
図5Cを参照)において受信されたそれぞれの修正済みの及び未修正のエラーのトリアージを行うことになる(
図5Dのブロック594)。トリアージが成功した場合、プロセッサ140は、修正行動を取る(
図5Dのブロック597)。その一方で、トリアージが失敗した場合、プロセッサ140は、行動を取らず(
図5Dのブロック596)、SoC障害タイマ424が満了した後にSoCエラー処理回路422に(ソフトウェア介入なしに)SoCエラーを送らせる(
図5Dのブロック584)。SoCエラーは、外部システム404が自動車プラットフォーム100(
図1を参照)を安全な状態に戻すことを可能にして、外部システム404(たとえば、オプションの外部制御ユニット106、1つ又は複数の外部マイクロコントローラ、1つ又は複数の外部エージェント、及び類似のもの)に通知する。
【0081】
図6A~6Cは、修正済みエラー信号、未修正エラー信号、又はSoC障害アグリゲータ信号のうちの少なくとも1つによってSI110が特定の障害を通知されるときにSI110によって取られ得る例示的行動を示す。
図6Aは、本開示のいくつかの実施例による、低重大性未修正エラー(たとえば、最小値)がアサートされた後にプロセッサ140によって受信及び送信される信号の例示的信号タイミング図を示す。
図6Aの線612A~618Aは、それぞれに、未修正エラー信号、メールボックス割り込み信号、SoC障害アグリゲーション信号、及びSoCエラー信号を表す。未修正エラー信号、メールボックス割り込み信号、SoC障害アグリゲーション信号、及びSoCエラー信号は、線610Aによって表されるクロック信号と同期化される。線610Aによって表されるクロック信号が、SIドメインにおける第2の(SI)クロック114(
図1を参照)に基づいて生成される。
【0082】
線612Aは、SI障害アグリゲータ142への未修正エラー信号導体412(
図4を参照)によって行われる未修正エラー信号を表す。線612Aの一部分622Aは、未修正エラーのアサーションを表す。未修正エラー信号の受信(たとえば、
図5Cのブロック552)の後、SI障害アグリゲータ142は、割り込みをプロセッサ140に送る(たとえば、
図5Cのブロック566)。
【0083】
次いで、
図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)。
【0084】
その一方で、メールボックス156の内容が、プロセッサ150が特定の障害を取り除いたことを示さない場合、プロセッサ140は、1つ又は複数の修正行動を取ることを決定し得る(たとえば、
図5Cの決定ブロック573における決定は、「はい」である)。修正行動(たとえば、
図5Cのブロック574において取られる)が、成功した場合、プロセッサ140は、エラーをデアサートする(又は障害を取り除く)ためにプロセッサ150に通知し得る。たとえば、プロセッサ140は、プロセッサ150にメールボックス割り込みを送り得る及び/又は障害情報をメールボックス156に書き込み得る。プロセッサ150がこの通知を受信し、エラーをデアサートした後、プロセッサ150は、エラーがデアサートされたことをプロセッサ140に通知する(たとえば、未修正エラー信号、メールボックス割り込み、及び/又はメールボックス156に記憶された障害情報を介して)。この通知を受信した後、プロセッサ140は、たとえば、ステータス・ビット「BT2」の設定を解除することによって、エラーを取り除き得る(たとえば、
図5Cのブロック578)。プロセッサ140がメールボックス156を読み取り、修正行動を取った後、線612Aの一部分624Aは、未修正エラーのデアサーションを表す。曲線状の矢印628Aは、プロセッサ140がメールボックス割り込みを受信したときとプロセッサ140がエラーをデアサートした(又は障害を取り除く)ときとの間の遅延を表す。
【0085】
修正行動が成功したとき、プロセッサ140は、プロセッサ140が特定の障害を取り除いたことを示すメールボックス割り込みをメールボックス156へ送り得る(たとえば、
図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においてエラーを取り除き得る。
【0086】
線616Aは、SoC障害アグリゲーション信号を表し、SoC障害アグリゲーション・エラーがアサートされなかったことを示す。したがって、未修正の障害は、未修正エラー・タイマ420U満了する前に、取り除かれた。
【0087】
線618Aは、接続406を介して外部システム404(たとえば、オプションの外部制御ユニット106、1つ又は複数の外部マイクロコントローラ、1つ又は複数の外部エージェント、及び類似のもの)に送られ得るSoCエラー信号を表す。未修正エラーは、処理され、SoC障害アグリゲーション・エラーは、アサートされなかったので、線618Aは、SI110は外部システム404に未修正エラーを通知しない(たとえば、決定ブロック575における決定が「いいえ」である)ことを示す。
【0088】
図6Bは、本開示のいくつかの実施例による、高重大性未修正エラー(たとえば、最大値)がアサートされた後にプロセッサ140によって受信及び送信される信号の例示的信号タイミング図を示す。
図6Bの線612B~618Bは、それぞれ、未修正エラー信号、メールボックス割り込み信号、SoC障害アグリゲーション信号、及びSoCエラー信号を表す。未修正エラー信号、メールボックス割り込み信号、SoC障害アグリゲーション信号、及びSoCエラー信号は、線610Bによって表されるクロック信号と同期される。線610Bによって表されるクロック信号は、SIドメインにおける第2の(SI)クロック114(
図1を参照)に基づいて生成された。
【0089】
線612Bは、SI障害アグリゲータ142への未修正エラー信号導体412(
図4を参照)によって行われる未修正エラー信号を表す。線612Bの一部分622Bは、未修正エラーのアサーションを表す。未修正エラー信号を受信した(たとえば、
図5Cのブロック552)後、SI障害アグリゲータ142は、割り込みをプロセッサ140に送る(たとえば、
図5Cのブロック566)。
【0090】
次いで、
図6Bにおいて、割り込みコントローラ141は、メールボックス割り込みを受信する(たとえば、
図5Cの決定ブロック568における決定は、「はい」である)。線614Bの一部分624Bは、第1の未修正エラーが高重大性(たとえば、7)を有することを示す、メールボックス割り込みを表す。メールボックス割り込みは、特定の障害が高重大性を有することを示すので、プロセッサ140は、メールボックス156にアクセスしないことを決定する(たとえば、
図5Cの決定ブロック570における決定は、「いいえ」である)。たとえば、プロセッサ140は、自動車SoC104のその他の構成要素160にアクセスすることは危険過ぎ、それを行うことはSI110を害し得ると決定し得る。
図6Bにおいて、プロセッサ140はまた、1つ又は複数の修正行動を取らないことを決定する(たとえば、
図5Cの決定ブロック573における決定は、「いいえ」である)。
図6Bでは、SI110は、1つ又は複数の修正行動を実行することはできないので、未修正エラーは、デアサートされない。
【0091】
しかしながら、プロセッサ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に通知することを決定した。
【0092】
図6Cは、本開示のいくつかの実施例による、未修正エラー(たとえば、最大値)がアサートされたがSI110がメールボックス割り込みを受信しない後にプロセッサ140によって受信及び送信される信号の例示的信号タイミング図を示す。
図6Cの線612C~618Cは、それぞれ、未修正エラー信号、メールボックス割り込み信号、SoC障害アグリゲーション信号、及びSoCエラー信号を表す。未修正エラー信号、メールボックス割り込み信号、SoC障害アグリゲーション信号、及びSoCエラー信号は、線610Cによって表されるクロック信号と同期される。線610Cによって表されるクロック信号は、SIドメインにおける第2の(SI)クロック114(
図1を参照)に基づいて生成された。
【0093】
線612Cは、SI障害アグリゲータ142への未修正エラー信号導体412(
図4を参照)によって行われる未修正エラー信号を表す。線612Cの一部分622Cは、未修正エラーのアサーションを表す。未修正エラー信号を受信した後(たとえば、
図5Cのブロック552)、SI障害アグリゲータ142は、割り込みをプロセッサ140に送る(たとえば、
図5Cのブロック566)。
【0094】
図6Cにおいて、線614Cは、メールボックス割り込みが受信されることを示さない。したがって、この実例において、割り込みコントローラ141は、メールボックス割り込みを受信しない(たとえば、
図5Cの決定ブロック568における決定は、「いいえ」である)。これは、たとえば、プロセッサ150がメールボックス割り込みを送ることを失敗(たとえば、
図5Bのブロック544)させる(
図5Cの決定ブロック543における決定が「はい」である)、未修正エラーのトリアージを完了することにプロセッサ150が失敗したとき(たとえば、
図5Bのブロック542)に、生じ得る。したがって、プロセッサ140は、メールボックス割り込みかSoC障害アグリゲータ・エラーのいずれかを、どちらが最初に起こるとしても、受信するのを待つ(たとえば、
図5Cのブロック558)。
【0095】
線628Cは、第3の所定の時間量を表し、未修正エラー・タイマ420Uが満了したことを示す。プロセッサ140もプロセッサ150も第1の未修正エラーを取り除くことはできなかったので、未修正エラー信号をSI110に及び割り込みをプロセッサ150に送ったSoC障害アグリゲータ152のうちの特定の1つに、SoC障害アグリゲータ信号導体414を介してSI障害アグリゲータ142にSoC障害アグリゲータ信号を送信させた(たとえば、
図5Aのブロック532において)、未修正エラー・タイマ420Uは、満了すること可能にされる(たとえば、
図5Aの決定ブロック530における決定は、「はい」である)。SI障害アグリゲータ142が、SoC障害アグリゲータ信号を受信する(たとえば、
図5Dのブロック582において)。線616Cの一部分624Cは、特定のSoC障害アグリゲータによってSI110に送られるSI障害アグリゲータ・エラーを表す。曲線状の矢印630Cは、未修正エラーがSI110によって受信されたときとSI障害アグリゲータ・エラーがSI110によって受信されたときとの間の遅延を表す。
【0096】
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は、SoC障害タイマ424が満了したことを意味する、第4の所定の時間量より多くが経過したことを示す。曲線状の矢印634Cは、SI障害アグリゲータ・エラーがSI110によって受信されたときとSoCエラーがSI110によってアサートされたときとの間の遅延を表す。したがって、SI110におけるハードウェアは、自動車プラットフォーム100を安全な状態に戻そうと試みることになる、外部システム404に通知する。
【0097】
図2を参照すると、前述のように、SI110及び自動車SoC104のその他の構成要素160は、揮発性メモリ126を共用する。しかしながら、SI110は、第1のリスク分類レベル内で動作し、自動車SoC104のその他の構成要素160は、より低い第2のリスク分類レベル内で動作し得る。たとえば、SI110は、ASIL-Dにおいて動作し得るが、揮発性メモリ126並びにSI110と揮発性メモリ126との間の通信進路(たとえば、相互接続、メモリ・コントローラ、及び類似のもの)を含む、自動車SoCのその他の構成要素は、ASIL-Bにおいて動作し得る。
【0098】
SI110が自動車SoC104のその他の構成要素160と揮発性メモリ126を共用することを可能にするために、別個の専用メモリ領域(「カーブアウト」250と称される)が、SI110による排他的使用のために揮発性メモリ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への任意のアクセスは、セキュリティ許可チェック、たとえば、後述のもの、を受け得る。
【0099】
SI110は、SI110の他の構成要素とカーブアウト250との間に位置付けられたハードウェアを含む、エラー検出ブロック272を含む。したがって、エラー検出ブロック272は、揮発性メモリ・インターフェース200Aの構成要素として実装され得る。別法として、エラー検出ブロック272は、プロセッサ140と揮発性メモリ・インターフェース200Aとの間に位置付けられ得る。そのような実施例において、1つ又は複数の信号導体(たとえば、ワイヤ、信号トレース、及び類似のもの)が、プロセッサ140及び揮発性メモリ・インターフェース200Aのそれぞれにエラー検出ブロック272を接続し得る。
【0100】
エラー検出ブロック272のハードウェアは、コード生成サブブロック273(
図8を参照)を含み得る。コード生成サブブロック273は、CRCコードを生成する周期的冗長チェック(「CRC:cyclic redundancy check」)コード生成回路を使用して、実装され得る。別法として、エラー検出ブロック272は、異なるタイプのエラー検出コード、たとえば、エラー訂正コード(「ECC:error correcting code」)、を生成する他のタイプのコード生成回路を含み得る。エラー検出ブロック272のハードウェアは、エラー検出ブロック272を通過するデータの1つ又は複数のエラー検出コード(たとえば、CRCコード)を決定する。たとえば、エラー検出ブロック272は、エラー検出ブロック272を通過するデータの各バイトの別個のエラー検出コードを決定し得る。エラー検出コードは、バイトと、バイトが記憶されるべきカーブアウト250内のデータ・アドレスとに基づいて、計算され得る。たとえば、以下の方程式1は、カーブアウト250に書き込まれるべきデータの特定のバイトのエラー検出コードを決定するために、使用され得る:
crc_out
Byte x=CRC(バイト・アドレス,バイト・データ) 方程式1
【0101】
前述の方程式1において、変数「crc_out
Byte x」は、変数「バイト・データ」によって表される、バイトと、変数「バイト・アドレス」によって表される、データ・アドレスとに基づいて計算されるエラー検出コードを表す。方程式1において、関数「CRC」は、入力として変数「バイト・データ」及び「バイト・アドレス」の値を使用し、変数「crc_out
Byte x」の値を出力する。関数「CRC」の出力は、存在するとき、コード生成サブブロック273(
図8を参照)によって少なくとも部分的に計算され得る。
【0102】
エラー検出コードが決定された後、エラー検出ブロック272は、エラー検出コードのコード・アドレスを決定する(たとえば、オフセットを使用して)。たとえば、以下の方程式2が、カーブアウト250に書き込まれるべきデータの特定のバイトのエラー検出コードを決定するために使用され得る。
crc_out_address=write_address+fixed_offset 方程式2
【0103】
前述の方程式2において、変数「crc_out_address」は、変数「fixed_offset」によって表される、バイト及びオフセットの、変数「write_address」によって表される、データ・アドレスに基づいて計算されるコード・アドレスを表す。前述のように、カーブアウト250は、データを記憶する第1のサブセクション252(
図8を参照)及びエラー検出コードを記憶する第2のサブセクション254(
図8を参照)を有するサブセクションに分けられ得る。したがって、前述の方程式1において変数「バイト・アドレス」によって表される、データ・アドレスは、第1のサブセクション252に位置し得、前述の方程式2において変数「write_address」によって表される、コード・アドレスは、第2のサブセクション254に位置し得る。そのような実施例において、変数「fixed_offset」の値は、エラー検出コードが第2のサブセクション254に記憶されることになることを確実にするために、カーブアウト250の第1のサブセクション252のサイズに等しくてもよい。この方式では、第1の及び第2のサブセクション252及び254のうちの1つで生じる障害が他に影響を及ぼさなくてもよいように、アドレスベースの分離が、エラー検出コードからデータを分離するために使用される。
【0104】
エラー検出ブロック272は、データ・アドレスにおけるデータの記憶とコード・アドレスにおけるエラー検出コードの記憶との間の遅延(たとえば、少数のクロック・サイクル)をもたらす。この遅延は、データに悪影響を及ぼすイベント(たとえば、一時的イベント)がエラー検出コードにも悪影響を及ぼすことになる可能性を低減する。言い換えれば、遅延は、クロック誤作動のような問題からの保護を提供するのを助ける、共通原因故障及び一時的故障からのイミュニティを提供するのを助ける。エラー検出ブロック272は、データの複数のバイト及びそれらの対応するエラー検出コードを、カーブアウト250においてそれらを記憶する前に、バッファリングし得る。次いで、エラー検出ブロック272は、遅延がその後に続く第1のサブセクション252にデータのバイト(たとえば、16バイト)を記憶し得る。次に、エラー検出ブロック272は、対応するエラー検出コード(たとえば、16バイト)を第2のサブセクション254に記憶し得る。
【0105】
ここで
図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つのシステム、又は任意の組合せのシステムによって実行され得る。
【0106】
図7は、本開示のいくつかの実施例による、カーブアウト250(
図2、8、及び10を参照)にデータを書き込むための方法700を示す流れ図である。図解を容易にするために、方法700は、エラー検出ブロック272(
図2、8、及び10を参照)によって実行されるものとして説明されることになる。方法700が開始する前に、SIドメインにおいて動作するイニシエータ(たとえば、プロセッサ140、DMAエンジン402、又は類似のもの)が、データ及びデータ・アドレスを含む第1の書き込み命令をエラー検出ブロック272に転送する。イニシエータは、所定のサイズ(たとえば、16バイト)を有するデータをカーブアウト250に書き込み得る。
【0107】
図7を参照すると、第1のブロック702において、エラー検出ブロック272(
図2、8、及び10を参照)は、イニシエータからデータ及びデータ・アドレスを含む第1の書き込み命令を受信する。ブロック704において、エラー検出ブロック272は、データの一部分及びその部分に対応するデータ・アドレスのうちの1つを選択する。非限定的な一実例として、エラー検出ブロック272は、ブロック704におけるデータのバイトと選択されたバイトに対応するデータ・アドレスとを選択し得る。いくつかの実施例において、第1の書き込み命令は、単一のデータ・アドレス(たとえば、第1のアドレス)のみを含み得る。後続のデータ・アドレスは、その単一のアドレスに基づいて決定され得る(たとえば、所定のデータサイズを単一のデータ・アドレスに加えることによって)。したがって、いくつかの実施例において、データ・アドレスは、データのうちの少なくともいくらかのためにブロック704において計算され得る。
【0108】
次いで、ブロック706において、エラー検出ブロック272は、(たとえば、前述の方程式1を使用して)ブロック704において選択されるデータの部分のエラー検出コードを決定する。次に、ブロック708において、エラー検出ブロック272は、ブロック704において選択されるデータの部分及び対応するデータ・アドレスを含む第1の書き込み命令をカーブアウト250(
図2、8、及び10を参照)の第1のサブセクション252(
図8及び10を参照)に転送する。第1の書き込み命令に従って、カーブアウト250は、第1のサブセクション252内の対応するデータ・アドレスにその部分を記憶する。
【0109】
次のブロック710において、エラー検出ブロック272(
図2、8、及び10を参照)は、(たとえば、前述の方程式2を使用して)ブロック706において決定されるエラー検出コードのコード・アドレスを決定する。ブロック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は、カーブアウト250に2度、ブロック708及び714において1度ずつ、アクセスする。第2の書き込み命令に従って、カーブアウト250は、第2のサブセクション254内のコード・アドレスにおいてエラー検出コードを記憶する。
【0110】
次いで、決定ブロック716において、エラー検出ブロック272(
図2、8、及び10を参照)は、データのいずれも記憶されなかったかどうかを決定する。エラー検出ブロック272が、データのうちの少なくともいくらかが記憶されなかったと決定するとき、決定ブロック716における決定は、「はい」である。さもなければ、決定ブロック516における決定は、「いいえ」である。決定ブロック716における決定が、「はい」であるとき、エラー検出ブロック272は、ブロック704に戻ってデータの新しい部分を選択する。その一方で、決定ブロック716における決定が、「いいえ」であるとき、エラー検出ブロック272は、ブロック702に戻って新しいデータ及び新しいデータ・アドレスを受信する。
【0111】
前述のように、エラー検出ブロック272は、データの複数のバイト及びそれらの対応するエラー検出コードを、カーブアウト250にそれらを記憶する前に、バッファリングし得る。たとえば、ブロック706~714は、それぞれ、多数のブロックのデータ(たとえば、ブロック704において選択される)について実行され得る。非限定的な一実例として、エラー検出ブロック272は、データのバイト及びそれらの対応するデータ・アドレスとともにブロック708においてカーブアウト250に第1の書き込み命令を送る前にデータの複数のバイトについてブロック706を実行し得る。たとえば、エラー検出ブロック272は、第1のサブセクション252に第1のデータ・アドレスとともにデータのバイトを送り得る。第1のサブセクション252は、第1のデータ・アドレスで開始する連続的メモリ・アドレスにおいてデータのバイトを書き込み得る。次いで、ブロック710において、エラー検出ブロック272は、ブロック706において決定される複数のエラー検出コードのコード・アドレスを決定し得る。ブロック712において、エラー検出ブロック272は、カーブアウト250にデータのバイトを書き込むこととエラー検出コードを書き込むこととの間の遅延をもたらす。次いで、ブロック714において、エラー検出ブロック272は、エラー検出コード及びコード・アドレスを含む第2の書き込み命令を第2のサブセクション254に転送する。第2のサブセクション254は、コード・アドレスにおいてエラー検出コードを書き込む。実装形態の詳細に応じて、第2の書き込み命令は、第1のコード・アドレスのみを含み得、第2のサブセクション254は、第1のコード・アドレスで開始する連続的メモリ・アドレスにおいてエラー検出コードを書き込み得る。
【0112】
図8は、方法700(
図7を参照)を実行するエラー検出ブロック272の一実例を示す。SI110は、SIドメイン内でそれぞれ動作する1つ又は複数のイニシエータ800、たとえば、プロセッサ140、DMAエンジン402、及び類似のもの、を含み得る。
図8において、イニシエータ800は、イニシエータ802(たとえば、プロセッサ140)を含む。イニシエータ802(たとえば、プロセッサ140)は、所定のサイズ(たとえば、16バイト)を有するデータをカーブアウト250に書き込み得る。
図8に示される実例において、イニシエータ802は、16バイトのデータ及び第1のデータ・アドレスをエラー検出ブロック272に送る。データは、「wdata_in[127:0]」という名称の128ビットのアレイによって
図8に記憶される、又は表され、第1のデータ・アドレスは、「Address_0[39:0]」という名称の40ビットのアレイによって
図8に記憶される、又は表される。しかしながら、実装形態の詳細に応じて、データは、他のサイズを有し得、128ビットが、非限定的な一実例として、提供される。同様に、第1のデータ・アドレスは、他のサイズを有し得、40ビットが、非限定的な一実例として、提供される。データの第1のバイトが、第1のデータ・アドレスに記憶され得、次いで、次のデータ・アドレスが、1つのバイトを第1のデータ・アドレスに加えることによって、データの第2のバイトのために識別され得る、などが行われる。
図8は、安全島相互接続808を介して信号806においてエラー検出ブロック272に第1の書き込み命令804を送るイニシエータ802を示す。前述のように、第1の書き込み命令804は、データ及び第1のデータ・アドレスを含む。安全島相互接続808は、バス及び類似のものとして実装され得る。
【0113】
安全島相互接続808は、第1の書き込み命令804をエラー検出ブロック272に配信する(たとえば、
図7のブロック702)。図示された実施例において、安全島相互接続808は、データのバイト及び第1のデータ・アドレスのうちの1つをそれぞれ含む信号810-0から810-15において第1の書き込み命令804を配信する。この実施例では、エラー検出ブロック272は、データの各バイトのエラー検出コード及びCRCコードにおいて生成されるエラー検出コードを生成する。エラー検出ブロック272は、バイトを、それらが信号810-0から810-15において受信されるとき、処理し始め得る(たとえば、
図7のブロック704)。
【0114】
次に、コード生成サブブロック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に送られる。
【0115】
エラー検出ブロック272は、第1の時間(たとえば、「時間=T0」として
図8において識別される)に揮発性メモリ・インターフェース200A(
図2を参照)を介してカーブアウト250の第1のサブセクション252にデータ及び第1のデータ・アドレスを送る(たとえば、信号812-0から812-15において)。言い換えれば、エラー検出ブロック272は、第1の書き込み命令をカーブアウト250の第1のサブセクション252に送る(たとえば、
図7のブロック708)。揮発性メモリ・インターフェース200Aは、自動車SoC104(
図1、2、及び4を参照)のデータ・バックボーン及びメモリ・サブシステム826を介して第1の書き込み命令をカーブアウト250に通信する。
図8において、第1の書き込み命令が、信号824において第1のサブセクション252にエラー検出ブロック272によって送られる。
【0116】
第1のサブセクション252は、第1のデータ・アドレス(「Address_0」として
図8に表される)において第1のバイト(「Data0」として
図8に表される)を記憶すること及び第1のデータ・アドレスの後の後続のデータ・アドレスに後続のバイトを書き込むことによって、メモリにデータを書き込む。この書き込みは、「時間=T0」として
図8に表される、第1の時間に生じる。次いで、第1のサブセクション252は、データが記憶されたことを認める応答信号828をイニシエータ802へ送る。応答信号828は、応答信号828を揮発性メモリ・インターフェース200A(
図2を参照)に転送する、データ・バックボーン及びメモリ・サブシステム826に第1のサブセクション252によって送られる。揮発性メモリ・インターフェース200Aが、アンロックされるとき、揮発性メモリ・インターフェース200Aは、応答信号828を第1の(データ)バッファ820に転送する。
【0117】
第1の(データ)バッファ820は、カーブアウト250から応答信号828において受信される「データ書き込み完了応答」を並べ替える。たとえば、エラー検出ブロック272は、書き込み命令Aの後にエラー検出ブロック272によって書き込み命令Bが送られるように、カーブアウト250へ書き込み命令A及びBのペアを送り得る(たとえば、
図7のブロック708において送られる第1の書き込み命令において)。カーブアウト250が、書き込み命令A及びBに含まれるデータを書き込んだ後、カーブアウト250は、第1の及び第2のデータ書き込み完了応答をエラー検出ブロック272に送る。しかしながら、書き込み命令Bのために受信される第2のデータ書き込み完了応答は、書き込み命令Aのための第1のデータ書き込み完了応答の前にエラー検出ブロック272に到達し得る。これが生じるとき、第1の(データ)バッファ820は、第2のデータ書き込み完了応答を記憶し、第1のデータ書き込み完了応答を待ち、それが到達したときに第1のデータ書き込み完了応答を送り、第1のデータ書き込み完了応答の後に第2のデータ書き込み完了応答を送ることになる。したがって、第1の(データ)バッファ820は、応答信号828において、予期される順番で、データ書き込み完了応答を配置する。
【0118】
第1の(データ)バッファ820は、応答信号828をイニシエータ802に転送する、安全島相互接続808に応答信号828を転送する。この時点で、この実例では、データ(たとえば、16バイト)は、第1の単一の書き込み動作において第1のサブセクション252に書き込まれた。
【0119】
エラー検出ブロック272はまた、第1のデータ・アドレスに基づいて第1のコード・アドレスを決定する(たとえば、
図7のブロック710)。
図8において、第1のコード・アドレスは、16メガバイト(「MB」)を第1のデータ・アドレスに加えることによって、計算される。しかしながら、実装形態の詳細に応じて、オフセットは、他のサイズを有し得、16MBが、一実例として提供される。さらに、第1のコード・アドレスの位置は、他の方法及び/又は計算を使用して、決定され得る。
【0120】
エラー検出ブロック272は、第2の時間(たとえば、「時間=T1」として
図8において識別される)まで待つ(たとえば、
図7のブロック712)。第1の時間と第2の時間とは、異なる。第2の時間において、エラー検出ブロック272は、揮発性メモリ・インターフェース200A(
図2を参照)を介してカーブアウト250の第2のサブセクション254にエラー検出コード及び第1のコード・アドレスを送る。言い換えれば、エラー検出ブロック272は、第2の書き込み命令をカーブアウト250の第2のサブセクション254に送る(たとえば、
図7のブロック714)。揮発性メモリ・インターフェース200Aは、自動車SoC104(
図1、2、及び4を参照)のデータ・バックボーン及びメモリ・サブシステム826を介してカーブアウト250に第2の書き込み命令を通信する。
図8では、第2の書き込み命令が、信号834において第2のサブセクション254にエラー検出ブロック272によって送られる。
【0121】
第2のサブセクション254が、第1のコード・アドレス(「Address_1」として
図8に表される)において第1のエラー検出コード(「CRC0」として
図8に表される)を記憶すること及び第1のコード・アドレスの後の後続のコード・アドレスに後続のエラー検出コードを書き込むことによって、メモリにエラー検出コードを書き込む。次いで、第2のサブセクション254は、エラー検出コードが記憶されたことを認める応答信号838をイニシエータ802へ送る。
図8に示された実施例において、応答信号838が、応答信号838を揮発性メモリ・インターフェース200A(
図2を参照)に転送する、データ・バックボーン及びメモリ・サブシステム826に第2のサブセクション254によって送られる。揮発性メモリ・インターフェース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のコード書き込み完了応答を、それが到達したとき、送り、第1のコード書き込み完了応答の後に第2のコード書き込み完了応答を送ることになる。
【0122】
第2の(コード)バッファ822は、応答信号838を落とし得る。別法として、第2の(コード)バッファ822は、イニシエータ802に応答信号838を転送し得る、安全島相互接続808に応答信号838を転送し得る。この時点で、この実例において、エラー検出コード(たとえば、16バイト)は、第2の単一の書き込み動作において第2のサブセクション254に書き込まれた。
【0123】
揮発性メモリ・インターフェース200Aは、エラー検出ブロック272を揮発性メモリ126と接続する2つの並列の及びオプションで専用のインターフェースを含み得る。データが、第1のインターフェースを介して第1のデータ・アドレスに送られ得、エラー検出コードが、第2のインターフェースを介して第1のコード・アドレスに送られ得る。そのような実施例において、エラー検出ブロック272は、エラー検出ブロック272が第2のインターフェースを介して第2のサブセクション254に(たとえば、信号834において)エラー検出コード及び第1のコード・アドレスを含む第2の書き込み命令を送るのと同時に第1のインターフェースを介して第1のサブセクション252に(たとえば、信号824において)データ及び第1のデータ・アドレスを含む第1の書き込み命令を送り得る。さらに、(データ)応答信号828及び(コード)応答信号838は、それぞれに、第1の及び第2のインターフェースを介して同時に、それぞれに、第1の及び第2のバッファ820及び822に送信され得る。
【0124】
SI110のイニシエータ802(たとえば、プロセッサ140)が、カーブアウト250からデータを読み取ることを望むとき、SI110は、カーブアウト250からデータとエラー検出コードとの両方を受信する。SI110は、データがデータ・アドレスから読み取られるときとエラー検出コードがコード・アドレスから読み取られるときとの間の遅延をもたらす。この遅延は、データに悪影響を及ぼすイベントがエラー検出コードにも悪影響を及ぼすことになる可能性を低減する。SI110は、読み取りデータのチェック・コードを決定する及びエラー検出コードをチェック・コードと比較する、エラー検出ブロック272に読み取りデータを通す。この比較は、以下の方程式3によって表され得る:
CRC_gen(要求されるアドレス,フェッチされるデータ)==crc_inByte x(CRC_address) 方程式3
【0125】
方程式3において、演算子「==」は、演算子「==」の左側の式が演算子「==」の右側の式と等しいかどうかを示す。変数「フェッチされるデータ」は、ブロック906において取得されるデータの少なくとも一部分(たとえば、バイトx)を表し、変数「要求されるアドレス」は、データのその部分のデータ・アドレスを表し、変数「CRC_address」は、データの部分(たとえば、バイトx)のデータ・アドレスに基づいて決定されるコード・アドレスを表す。関数「CRC_gen」は、入力として変数「フェッチされるデータ」及び「要求されるアドレス」の値を使用し、関数「CRC_gen」は、部分(たとえば、バイトx)のチェック・コードを出力する。関数「CRC_gen」は、前述の方程式1の関数「CRC」と同一でもよい。関数「CRC_gen」の出力は、存在するとき、コード生成サブブロック273(
図8を参照)によって少なくとも部分的に計算され得る。式「crc_in
Byte x(CRC_address)」は、それのデータ・アドレスを使用して部分(たとえば、バイトx)について決定されるコード・アドレスから取得されるエラー検出コードを表す。したがって、方程式3は、チェック・コードがエラー検出コードと等しい又は一致するかどうかを決定する。エラー検出ブロック272は、チェック・コードがエラー検出コードに一致しないとき、ミスマッチ・エラーを生成し得る。ミスマッチ・エラーが、命令149によって実装される及びプロセッサ140によって実行される安全性ソフトウェアによって、取り除かれ得るように、エラー検出ブロック272は、ミスマッチ・エラーをイニシエータ802、及びSI障害アグリゲータ142に送り得る。
【0126】
ここで
図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つのシステム、又は任意の組合せのシステムによって実行され得る。
【0127】
図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のサブセクション252に第1の読み取り命令を転送する。第1の読み取り命令が、第1のデータ・アドレスのみを含んだ場合、第1のサブセクション252は、第1のデータ・アドレスで開始する連続的メモリ・アドレスから所定の量のデータ(たとえば、16バイト)を読み取り得る。ブロック906において、エラー検出ブロック272は、第1のサブセクション252からデータ・アドレスにおいて記憶されたデータを受信する。
【0128】
次いで、ブロック908において、エラー検出ブロック272が、データに対応するエラー検出コードのコード・アドレスを決定する(たとえば、前述の方程式2を使用して)。非限定的な一実例として、コード・アドレスが、データ・アドレスに少なくとも部分的に基づいて決定され得る。たとえば、前述の方程式2に従って、コード・アドレスのそれぞれが、データ・アドレス(変数「write_address」の値)のうちの対応する1つにオフセット(変数「fixed_offset」の値)を加えることによって、計算され得る。実装形態の詳細に応じて、エラー検出ブロック272は、第1のデータ・アドレスに基づいて第1のコード・アドレスのみを識別し得る。次いで、ブロック910において、エラー検出ブロック272は、ブロック908において決定されるコード・アドレスにおいて記憶されたエラー検出コードを要求するのを待つ(たとえば、少数のクロック・サイクル)。したがって、ブロック910において、エラー検出ブロック272は、データを読み取ることとエラー検出コードをコード・アドレスから読み取ることとの間の遅延をもたらす。エラー検出ブロック272は、どのくらい長くエラー検出ブロック272がブロック910において待つかを決定するために使用される読み取り遅延タイマ(図示せず)を含み得る。したがって、エラー検出ブロック272は、第2のサブセクション254にエラー検出コードを要求する前に第6の所定の時間量待ち得る。
【0129】
待った後、次のブロック912において、エラー検出ブロック272は、ブロック908において決定されるコード・アドレスを含む及びそれらのコード・アドレスにおいて記憶されるエラー検出コードを要求する、第2の読み取り命令を第2のサブセクション254へ送る。したがって、データを読み取るために、エラー検出ブロック272は、2度、ブロック904及び912において1度ずつ、カーブアウト250にアクセスする。第2の読み取り命令が、第1のコード・アドレスのみを含んだ場合、第2のサブセクション254が、第1のコード・アドレスにおいて開始する連続的メモリ・アドレスから所定の数のエラー検出コード(たとえば、16バイト)を読み取り得る。ブロック914において、エラー検出ブロック272が、第2のサブセクション254からコード・アドレスに記憶されたエラー検出コードを受信する。ブロック916において、エラー検出ブロック272は、(たとえば、前述の方程式1を使用して)ブロック914において取得されるそれぞれのエラー検出コードのチェック・コードを決定する。
【0130】
決定ブロック918において、それぞれのエラー検出コードについて、エラー検出ブロック272は、エラー検出コードがエラー検出コードに対応するチェック・コードに一致するかどうかを決定する(たとえば、前述の方程式3を使用して)。エラー検出コードが、それの対応するチェック・コードに一致するとき、決定ブロック918における決定は、「はい」である。さもなければ、決定ブロック918における決定は、「いいえ」である。決定ブロック918における決定が、「はい」であるとき、ブロック920において、エラー検出ブロック272は、エラー検出コードに対応するデータをイニシエータ802(
図8を参照)に転送する。決定ブロック918における決定が、「いいえ」であるとき、ブロック922において、ミスマッチ・エラーが、命令149によって実装される及びプロセッサ140によって実行される安全性ソフトウェアによって、取り除かれ得るように、エラー検出ブロック272は、ミスマッチ・エラーを生成し、それをイニシエータ802、及びSI障害アグリゲータ142(
図1、2、及び4を参照)に送る。オプションで、ブロック922において、エラー検出コード(たとえば、ECCとして実装される)が、データを回復するために使用され得る情報(たとえば、ビット)を含む場合に、エラー検出ブロック272は、ミスマッチを訂正しようと試み得る。エラー検出ブロック272が、エラーを訂正することができる場合、エラー検出ブロック272は、ブロック922においてミスマッチ・エラーを生成することを省略し得る。ブロック920の後、エラー検出ブロック272は、ブロック920に進んで、データをイニシエータ802に転送する。次いで、方法900は、終了する。
【0131】
エラー検出ブロック272は、データの複数のバイト及びそれらの対応するエラー検出コードをカーブアウト250から同時に読み取り得る。たとえば、ブロック904~914は、データの多数のブロックについてそれぞれ実行され得る。非限定的な一実例として、ブロック904において、エラー検出ブロック272は、データの複数のバイトを第1のデータ・アドレスに要求する第1の読み取り命令を第1のサブセクション252へ送り得る。第1のサブセクション252は、第1のデータ・アドレスで開始する連続的メモリ・アドレスからデータのバイトを読み取り得、エラー検出ブロック272がブロック906において受信するデータのバイトをエラー検出ブロック272へ送り得る。次いで、ブロック908において、エラー検出ブロック272は、データ・アドレスに基づいてコード・アドレスを決定し得る。実装形態の詳細に応じて、エラー検出ブロック272は、第1のデータ・アドレスに基づいて第1のコード・アドレスのみを識別し得る。次いで、ブロック910において、エラー検出ブロック272は、データのバイトを読み取ることとエラー検出コードをカーブアウト250から読み取ることとの間の遅延をもたらす。次に、エラー検出ブロック272は、ブロック906において取得されたデータのバイトのカーブアウト250に記憶されたエラー検出コードを要求し得る。たとえば、エラー検出ブロック272は、第1のコード・アドレスを第2のサブセクション254に送り得る。第2のサブセクション254は、第1のコード・アドレスで開始する連続的メモリ・アドレスからエラー検出コードを読み取り得、エラー検出ブロック272がブロック914において受信するエラー検出コードをエラー検出ブロック272へ送り得る。次いで、方法900は、ブロック916で継続する。
【0132】
図10は、方法900を実行するエラー検出ブロック272の一実例を示す。この実例において、プロセッサ140は、
図8に示される実例によって記憶されるカーブアウト250からの16バイトのデータを読み取る。
図10では、読み取りデータは、「rdata_in[127:0]」と称される128ビットのアレイに記憶され、又はそれによって表され、データは、「Address_0[39:0]」と称される40ビットのアレイにおいて記憶される又はそれによって表される、第1のデータ・アドレスで開始して、記憶される。
図10は、第1の読み取り命令1004を安全島相互接続808を介してエラー検出ブロック272に送るイニシエータ802(たとえば、プロセッサ140)を示す。安全島相互接続808は、第1の読み取り命令1004をエラー検出ブロック272に配信する(たとえば、
図9のブロック902)。
【0133】
エラー検出ブロック272は、第3の時間(たとえば、「時間=T3」として
図8において識別される)に揮発性メモリ・インターフェース200A(
図2を参照)を介してカーブアウト250の第1のサブセクション252に第1のデータ・アドレスを送る。言い換えれば、エラー検出ブロック272は、第1の読み取り命令をカーブアウト250の第1のサブセクション252に転送する(たとえば、
図9のブロック904)。揮発性メモリ・インターフェース200Aは、自動車SoC104のデータ・バックボーン及びメモリ・サブシステム826を介してカーブアウト250に第1の読み取り命令を通信する。
図10において、第1の読み取り命令は、信号1010において第1のサブセクション252にエラー検出ブロック272によって送られる。
【0134】
第1のサブセクション252が、第1のデータ・アドレスにおいて第1のバイト(「バイト0」)で開始する及び第1のデータ・アドレスの後の後続のデータ・アドレスから後続のバイトを読み取るメモリからデータを読み取る。SI110は、カーブアウト250から所定のサイズ(たとえば、16バイト)を有するデータを読み取り得る。次いで、第1のサブセクション252は、読み取られたデータを含む応答信号1012をイニシエータ802へ送る。応答信号1012は、応答信号1012を揮発性メモリ・インターフェース200A(
図2を参照)に転送する、データ・バックボーン及びメモリ・サブシステム826に第1のサブセクション252によって送られる。揮発性メモリ・インターフェース200Aが、アンロックされるとき、揮発性メモリ・インターフェース200Aは、応答信号1012を第1の(データ)バッファ820に転送する(たとえば、
図9のブロック906)。読み取られた及び応答信号1012に含まれるデータは、データ読み取り完了を自動的に示し、したがって、データ読み取り完了応答であるものとして特徴を示され得る。第1の(データ)バッファ820がデータ書き込み完了応答を処置するように、第1の(データ)バッファ820は、応答信号1012において、予期される順番で、データ読み取り完了応答を配置し得る。この時点で、この実例では、データ(たとえば、16バイト)は、第1の単一の読み取り動作において第1のサブセクション252から読み取られており、第1の(データ)バッファ820によって、予期される順番で、配置された。
【0135】
次いで、エラー検出ブロック272は、第1のデータ・アドレスに基づいて第1のコード・アドレス(「Address_1」)を決定する(たとえば、
図9のブロック908)。
図10では、第1のコード・アドレスは、(たとえば)16メガバイト(「MB」)を第1のデータ・アドレス(「Address_0」)に加えることによって、計算される。
【0136】
次に、エラー検出ブロック272は、第4の時間(たとえば、「時間=T4」として
図10において識別される)まで待つ(たとえば、
図9のブロック910)。第4の時間に、エラー検出ブロック272は、揮発性メモリ・インターフェース200A(
図2を参照)を介して第2のサブセクション254内の第1のコード・アドレスにおいて記憶されたエラー検出コードを要求する。言い換えれば、エラー検出ブロック272は、第2の読み取り命令をカーブアウト250の第2のサブセクション254に送る(たとえば、
図9のブロック912)。揮発性メモリ・インターフェース200Aは、自動車SoC104のデータ・バックボーン及びメモリ・サブシステム826を介してカーブアウト250に第2の読み取り命令を通信する。
図10では、第2の読み取り命令は、信号1014において第2のサブセクション254にエラー検出ブロック272によって送られる。
【0137】
第2のサブセクション254は、第1のコード・アドレスにおける第1のエラー検出コード(「バイト0」の)を読み取ることと第1のコード・アドレスの後の後続のコード・アドレスから後続のエラー検出コードを読み取ることとによって、メモリからエラー検出コードを読み取る。
図8及び10の実例では、エラー検出コードは、それぞれ、1バイトのサイズである。次いで、第2のサブセクション254は、メモリから読み取られるエラー検出コードを含む応答信号1016をイニシエータ802へ送る。
図10において、エラー検出コードを運ぶ信号及び信号1014は、破線を有する矢印によって示されている。
図10に示された実施例において、応答信号1016は、応答信号1016を揮発性メモリ・インターフェース200A(
図2を参照)に転送する、データ・バックボーン及びメモリ・サブシステム826に第2のサブセクション254によって送られる。揮発性メモリ・インターフェース200Aが、アンロックされるとき、揮発性メモリ・インターフェース200Aは、応答信号1016を第2の(コード)バッファ822に転送する(たとえば、
図9のブロック914)。読み取られた及び応答信号1016に含まれるエラー検出コードは、自動的に、コード読み取り完了を示し、したがって、コード読み取り完了応答であるとして特徴を示され得る。第2の(コード)バッファ822がコード書き込み完了応答を処置するように、第2の(コード)バッファ822は、応答信号1016において、予期される順番で、コード読み取り完了応答を配置し得る。この時点で、この実例において、エラー検出コード(たとえば、16バイト)は、第2の単一の読み取り動作において第2のサブセクション254から読み取られ、第2の(コード)バッファ822によって、予期される順番で、配置された。
【0138】
エラー検出ブロック272が、第4の時間(たとえば、「時間=T4」として
図10において識別される)まで、待つ(たとえば、
図9のブロック910)とき、エラー検出ブロック272は、単に、時間において第1の読み取り命令と第2の読み取り命令との間隔を空ける。エラー検出ブロック272は、エラー検出ブロック272が応答信号1012においてデータを受信した後、エラー検出コードを第2のサブセクション254に要求し得る。別法として、エラー検出ブロック272は、エラー検出コードを第2のサブセクション254に要求する前に、それが応答信号1012においてデータを受信するユニットを待たなくてもよい。言い換えれば、第4の時間は、いつ応答信号1012が受信されるかではなく、いつ第1の読み取り命令が送られるかに基づいて、決定され得る。
【0139】
前述のように、バイトは、応答信号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の及び第2のバッファ820及び822は、バイトについて生成されるエラー検出コードに関して知られている位置においてデータの各バイトを位置付けるために、信号1022-0から1022-15及び1024-0から1024-15を経路指定する又は並べ替えることができる。
図10に示された実施例において、信号1022-0から1022-15によって運ばれるバイトは、信号1024-0から1024-15によって運ばれるエラー検出コードと交互配置される。したがって、
図10にあるように、データのバイトは、陰影付きのブロックb0~b15によって表される位置に配置され、エラー検出コードは、ブロックc0~c15によって表される位置に配置される。
【0140】
次いで、コード生成サブブロック273が、データのそれぞれのバイトのチェック・コードを(たとえば、前述の方程式1を使用して)決定する(たとえば、
図9のブロック916)。したがって、コード生成サブブロック273が、信号1022-0から1022-15におけるデータのバイト及び信号1024-0から1024-15における対応するエラー検出コードを入力として受信する。
【0141】
それぞれのエラー検出コードについて、エラー検出ブロック272は、エラー検出コードがエラー検出コードに対応するチェック・コードに一致するかどうかを決定する(たとえば、
図9の決定ブロック918)。エラー検出ブロック272は、ANDゲートとして実装される
図10に示される、論理構成要素1034にデータのバイトを含むデータ信号1032とともに転送されるパス信号1030においてそれらが一致したかどうかを示す。パス信号1030が、バイトについて記憶されたエラー検出コードがバイトについて作成されたチェック・コードに一致することを示す場合、論理構成要素1034は、チェックされるデータ信号1036(データのバイトのみを含む)におけるバイトを出力し、チェックされるデータ信号1036をイニシエータ802に転送することになる。その一方で、パス信号1030が、ミスマッチを示す場合、論理構成要素1034は、チェックされるデータ信号1036内のバイトをイニシエータ802に転送しないことになる。その代わりとして、エラー検出ブロック272は、バイトを破棄する及び/又はバイトをミスマッチが生じたことを示す情報(たとえば、ゼロ)と置き換えることができる。非限定的な一実例として、ミスマッチを生成したバイトのビットは、ゼロに設定され得る。チェックされるデータ信号1036は、イニシエータ802に転送される(たとえば、
図9のブロック920)。エラー検出ブロック272は、エラー検出コードがエラー検出コードに対応するチェック・コードに一致しないとき、ミスマッチ・エラーを生成し得、イニシエータ802に送り得る(たとえば、
図9のブロック922)。言い換えれば、パス信号1030が、1つ又は複数のミスマッチを示す場合、エラー検出ブロック272は、ミスマッチ・エラーを生成し得、それをイニシエータ802に送り得る。別法として又は追加で、エラー検出ブロック272は、未修正エラーとしてSI障害アグリゲータ142にミスマッチ・エラーを送り得る。したがって、カーブアウト250における記憶及び/又はカーブアウト250からの検索中の、データにおいて生じる任意のエラー又はエラー検出コードが、検出及び報告され得る(たとえば、未修正エラーとして)。
【0142】
前述のように、揮発性メモリ・インターフェース200Aは、エラー検出ブロック272を揮発性メモリ126と接続する2つの並列の及びオプションで専用のインターフェースを含み得る。そのような実施例において、エラー検出ブロック272が、第2のインターフェースを介して第2のサブセクション254に第1のコード・アドレスを含む第2の読み取り命令(たとえば、信号1014における)を送るのと同時に、エラー検出ブロック272は、第1のインターフェースを介して第1のサブセクション252に第1のデータ・アドレスを含む第1の読み取り命令(たとえば、信号1010における)を送り得る。さらに、第1のサブセクション252から読み取られる(たとえば、及び応答信号1012において送信される)データと第2のサブセクション254から読み取られる(たとえば、及び応答信号1016において送信される)エラー検出コードとは、それぞれに、第1の及び第2のインターフェースを介して同時に、それぞれに、第1の及び第2のバッファ820及び822に送信され得る。
【0143】
図2を参照すると、エラー検出ブロック272は、エラー検出ブロック272がデータをカーブアウト250から読み取らなければならない及び/又はカーブアウト250に書き込ななければならない時間量を制限する少なくとも1つのトランザクション・タイマ、たとえば、退出及び進入タイマ274及び276、を含み得る、又はそれに接続され得る。退出タイマ274及び/又は進入タイマ276は、アクセスがエラー検出ブロック272を通過するときにはいつでも、自動的に開始する。たとえば、進入タイマ276は、データがエラー検出ブロック272とイニシエータ802(たとえば、プロセッサ140)との間を通過するときにはいつでも、開始し得、退出タイマ274は、データがエラー検出ブロック272とSoCドメイン(たとえば、カーブアウト250)との間を通過するときにはいつでも、開始し得る。進入タイマ276は、エラー検出ブロック272の機能を監視するのを助け得る及び/又は退出タイマ274のバックアップ機能を提供するのを助け得る(たとえば、退出タイマ274が適切に機能していない場合)。
【0144】
書き込み動作中に、進入タイマ276は、イニシエータ802がデータをエラー検出ブロック272に渡してカーブアウト250に書き込む(たとえば、
図7のブロック702において)とき、開始し得る。次いで、退出タイマ274は、データがエラー検出ブロック272及び/又はSIドメインを出る(たとえば、
図7のブロック708において)とき、開始し得る。退出タイマ274は、応答(たとえば、
図8に示される応答信号828)がエラー検出ブロック272によってカーブアウト250から受信されるとき、停止又はリセットし得る。次いで、進入タイマ276は、応答(たとえば、
図8に示される応答信号828)がエラー検出ブロック272によってイニシエータ802(
図8を参照)に転送されるとき、停止又はリセットし得る。退出タイマ274が、イニシエータ802はカーブアウト250からの応答(たとえば、
図8に示される応答信号828)を受信しなかったことを意味する、第1の閾値時間量より多くが経過した及びエラー検出ブロック272は応答を受信しなかったことを示す場合、イニシエータ802(たとえば、プロセッサ140)は、退出タイムアウト・エラーを生成する。進入タイマ276が、イニシエータ802はカーブアウト250から応答を受信しなかったことを意味する、第2の閾値時間量より多くが経過した及びエラー検出ブロック272はイニシエータ802に応答を送らなかったことを示す場合、イニシエータ802は、進入タイムアウト・エラーを生成する。
【0145】
読み取り動作中に、進入タイマ276は、エラー検出ブロック272が読み取り要求をイニシエータ802から受信する(たとえば、
図9のブロック902において)とき、開始し得る。次いで、退出タイマ274は、エラー検出ブロック272が第1のデータ・アドレスに記憶されたデータをカーブアウト250に要求する(たとえば、
図9のブロック904において)とき、開始し得る。退出タイマ274は、データがエラー検出ブロック272によってカーブアウト250から受信される(たとえば、
図9のブロック906において)とき、停止又はリセットし得る。次いで、進入タイマ276は、データがエラー検出ブロック272によってイニシエータ802に転送される(たとえば、
図9のブロック920において)とき、停止又はリセットし得る。退出タイマ274が、イニシエータ802はエラー検出ブロック272からデータを受信しなかった(たとえば、
図10に示されるチェックされるデータ信号1036において)ことを意味する、第1の閾値時間量が経過した及びエラー検出ブロック272はカーブアウト250からデータを受信しなかったことを示す場合、イニシエータ802は、退出タイムアウト・エラーを生成する。進入タイマ276が、イニシエータ802はカーブアウト250からデータを受信しなかったことを意味する、第2の閾値時間量より多くが経過した及びエラー検出ブロック272はデータをイニシエータ802に送らなかったことを示す場合、イニシエータ802は、進入タイムアウト・エラーを生成する。
【0146】
図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が第1のデータ・アドレスに記憶されたデータをカーブアウト250に要求するときに開始し得る。ブロック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における)を受信するときに、生じ得る。
【0147】
前述のように、進入タイマ276は、イニシエータ802が、データをエラー検出ブロック272に渡して書き込み動作中にカーブアウト250に書き込む(たとえば、
図7のブロック702において)ときに、開始し得、或いは進入タイマ276は、エラー検出ブロック272が読み取り動作中に読み取り要求をイニシエータ802から受信する(たとえば、
図9のブロック902において)ときに、開始し得る。したがって、進入タイマ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が、書き込み動作中にイニシエータ802に応答(たとえば、応答信号828)を転送する、又はエラー検出ブロック272が、読み取り動作中にデータ(たとえば、チェックされたデータ信号1036)をイニシエータ802に転送するときに、生じ得る。
【0148】
ブロック1124は、エラー検出ブロック272(
図2、8、及び10を参照)のコード生成サブブロック273(
図2、8、及び10を参照)が、エラー検出コード又はチェック・コードの生成中にエラーが生じたことを示すコード生成/チェック・エラー1126を生成し得る、ということを示す。いくつかの実施例において、コード生成/チェック・エラー1126は、ミスマッチが生じたことを示すために使用され得る。非限定的な一実例として、信号1102が、第1の書き込み命令804を含むとき、コード生成サブブロック273は、エラー検出コードを生成しながら、コード生成エラーを生成し得る。他の非限定的な実例として、信号1102が、第1の読み取り命令1004を含むとき、エラー検出ブロック272は、コード生成/チェック・エラー1126としてエラー・ロガー1108に転送される、チェック・コードを生成しながらミスマッチ・エラー及び/又はコード生成エラーを生成し得る。
【0149】
エラー・ロガー1108は、エラー・ロガー1108がSI障害アグリゲータ142に送るエラー通知1130にエラー1106、1116、及び1126を集計する障害アグリゲータとして機能し得る。
【0150】
自動車SoC104が、最初に起動するとき、SI110のプロセッサ140は、カーブアウト250からデータを先取りしようと試み得る。先取りは、カーブアウト250からのデータの非計画的な読み取りのタイプであるとして特徴を示され得る。共用揮発性メモリ126は、揮発性なので、その時点で、カーブアウト250は、エラー検出コードを欠いている又はエラー検出コードをミスマッチさせることに関連する初期化されていないデータを記憶していてもよい。エラー検出ブロック272がミスマッチ・エラーを生成するのを防ぐために、SI110(たとえば、プロセッサ140、DMAエンジン402、及び/又は類似のもの)が、プロセッサ140が先取りすることになる又は先取りし得るデータのカーブアウト250に1つ又は複数のエラー検出コードを書き込み得る。非限定的な一実例として、SI110は、エラー検出ブロック272のハードウェアに、それぞれがコード・アドレスに関連する、初期データの1つ又は複数のエラー検出コードを決定させる、カーブアウト250への初期データを書き込み得る。次いで、SI110は、カーブアウト250にそれの関連コード・アドレスに各エラー検出コードを記憶させ得る。したがって、先取り動作中に、第2のサブセクション254によって記憶されるエラー検出コードは、第1のサブセクション252に記憶されるデータに対応することになり、エラー検出ブロック272は、ミスマッチ・エラーを生成しないことになる。
【0151】
図2を参照すると、自動車プラットフォーム100(
図1を参照)が、カーブアウト250を必要としない場合、SI110は、コード生成サブブロック273(
図2、8、及び10を参照)及び/又はエラー検出ブロック272をオフにし得る(たとえば、ソフトウェア・レジスタ書き込みを使用して)。たとえば、揮発性メモリ126が、自動車プラットフォーム100にとって十分なリスク・レベルで動作しているとき、SI110は、コード生成サブブロック273及び/又はエラー検出ブロック272をオフにし得る。
【0152】
本明細書に記載のこの及び他の配置は、単に実例として説明されていることを理解されたい。他の構成及び要素(たとえば、マシン、インターフェース、機能、順番、機能のグループ化など)が、図示されたものに加えて又はそれらの代わりに使用され得、いくつかの要素は、完全に省略され得る。さらに、本明細書に記載の要素の多数は、個別の若しくは分散された構成要素として又は他の構成要素と併せて、並びに任意の適切な組合せ及び場所において実装され得る機能エンティティである。エンティティによって実行されるものとして本明細書に記載された様々な機能は、ハードウェア、ファームウェア、及び/又はソフトウェアによって実施され得る。たとえば、様々な機能は、メモリに記憶された命令を実行するプロセッサによって実施され得る。
【0153】
例示的自律型車両
図12は、本開示のいくつかの実施例による、例示的自律型車両1200のイラストレーションである。自律型車両1200(別法として、「車両1200」と本明細書で称される)は、乗客車両、たとえば、自動車、トラック、バス、ファースト・レスポンダ車両、シャトル、電気若しくは原動機付自転車、バイク、消防車、警察車両、救急車、ボート、建設車両、潜水艦、ドローン、及び/又は別のタイプの車両(たとえば、無人の及び/又は1人若しくは複数の乗客を乗せる)、を含み得るが、これらに限定されない。自律型車両は、一般に、米国運輸省道路交通安全局(NHTSA:National Highway Traffic Safety Administration)、米国運輸省の部署、及び自動車技術者協会(SAE:Society of Automotive Engineers)「Taxonomy and Definitions for Terms Related to Driving Automation Systems for On-Road Motor Vehicle」(2018年6月15日に公開された規格番号J3016-201806、2016年9月30日に公開された規格番号J3016-201609、及びこの規格の前の及び未来のバージョン)によって定義される、自動化レベルに関して記述される。車両1200は、SAEによって定義されるものとしての自律運転レベルのレベル2~レベル5のうちの1つ又は複数による機能の能力を有し得る。たとえば、車両1200は、実施例に応じて、部分的運転自動化(レベル2)、条件付き自動化(レベル3)、高度自動化(レベル4)、及び/又は完全自動化(レベル5)の能力を有し得る。
【0154】
車両1200は、車両のシャシ、車体、車輪(たとえば、2、4、6、8、18など)、タイヤ、車軸、及び他の構成要素などの構成要素を含み得る。車両1200は、内部燃焼エンジン、ハイブリッド動力装置、完全な電気式エンジン、及び/又は別の推進システム・タイプなど、推進システム1250を含み得る。推進システム1250は、車両1200の推進力を有効にするために、トランスミッションを含み得る、車両1200のドライブ・トレインに接続され得る。推進システム1250は、スロットル/加速装置1252からの信号の受信に応答して制御され得る。
【0155】
ハンドルを含み得る、ステアリング・システム1254は、推進システム1250が動作しているときに(たとえば、車両が移動中のときに)車両1200のかじを取る(たとえば、所望の進路又はルートに沿って)ために使用され得る。ステアリング・システム1254は、ステアリング・アクチュエータ1256から信号を受信することができる。ハンドルは、完全自動化(レベル5)機能のオプションでもよい。
【0156】
ブレーキ・センサ・システム1246は、ブレーキ・アクチュエータ1248及び/又はブレーキ・センサからの信号の受信に応答して車両ブレーキを動作させるために使用され得る。
【0157】
1つ又は複数のCPU、システム・オン・チップ(SoC:system on Chip)1204(
図14)及び/又はGPUを含み得る、コントローラ1236は、車両1200の1つ若しくは複数の構成要素及び/又はシステムに信号(たとえば、コマンドの表現)を提供することができる。たとえば、コントローラは、1つ又は複数のブレーキ・アクチュエータ1248を介して車両ブレーキを動作させて、1つ又は複数のステアリング・アクチュエータ1256を介してステアリング・システム1254を動作させて、及び/又は1つ又は複数のスロットル/加速装置1252を介して推進システム1250を動作させるために、信号を送ることができる。コントローラ1236は、センサ信号を処理する、並びに律的運転を可能にするために及び/又は運転者の車両1200の運転を支援するために動作コマンド(たとえば、コマンドを表す信号)を出力する、1つ又は複数の搭載された(たとえば、統合された)計算デバイス(たとえば、スーパーコンピュータ)を含み得る。コントローラ1236は、自律運転機能のための第1のコントローラ1236、機能的安全性機能のための第2のコントローラ1236、人工知能機能(たとえば、コンピュータ・ビジョン)のための第3のコントローラ1236、インフォテインメント機能のための第4のコントローラ1236、緊急状態における冗長性のための第5のコントローラ1236、及び/又は他のコントローラを含み得る。いくつかの実例では、単一のコントローラ1236が、前述の機能のうちの2個以上を処理することができ、2個以上のコントローラ1236が、単一の機能、及び/又はその任意の組合せを処理することができる。
【0158】
コントローラ1236は、1つ又は複数のセンサから受信したセンサ・データ(たとえば、センサ入力)に応答して車両1200の1つ若しくは複数の構成要素及び/又はシステムを制御するための信号を提供することができる。センサ・データは、たとえば、そして制限なしに、全地球的航法衛星システム・センサ1258(たとえば、グローバル・ポジショニング・システム・センサ)、RADARセンサ1260、超音波センサ1262、LIDARセンサ1264、慣性計測装置(IMU:inertial measurement unit)センサ1266(たとえば、加速度計、ジャイロスコープ、磁気コンパス、磁力計など)、マイクロフォン1296、ステレオ・カメラ1268、ワイドビュー・カメラ1270(たとえば、魚眼カメラ)、赤外線カメラ1272、サラウンド・カメラ1274(たとえば、360度カメラ)、長距離及び/又は中距離カメラ1298、スピード・センサ1244(たとえば、車両1200のスピードを測定するための)、振動センサ1242、ステアリング・センサ1240、ブレーキ・センサ1246(たとえば、ブレーキ・センサ・システム1246の一部としての)、及び/又は他のセンサ・タイプから受信され得る。
【0159】
コントローラ1236のうちの1つ又は複数のコントローラは、車両1200の計器群1232から入力(たとえば、入力データによって表される)を受信し、出力(たとえば、出力データ、表示データなどによって表される)をヒューマン・マシン・インターフェース(HMI:human-machine interface)ディスプレイ1234、可聴式アナンシエータ、ラウドスピーカ、及び/又は車両1200の他の構成要素を介して提供することができる。出力は、車両ベロシティ、スピード、時間、マップ・データ(たとえば、
図14のHDマップ1222)、位置データ(たとえば、マップ上などの、車両1200の位置)、方向、他の車両の位置(たとえば、占有グリッド)、コントローラ1236によって把握されるものとしての物体及び物体の状況に関する情報などの、情報を含み得る。たとえば、HMIディスプレイ1234は、1つ又は複数の物体(たとえば、道路標識、警告標識、交通信号の変化など)の存在、及び/又は車両が行った、行っている、又は行うであろう運転操作(たとえば、今、車線変更をしていること、3.22km(2マイル)内の出口34Bを出ることなど)に関する情報を表示することができる。
【0160】
車両1200はさらに、1つ若しくは複数のワイヤレス・アンテナ1226及び/又はモデムを使用して1つ若しくは複数のネットワークを介して通信することができるネットワーク・インターフェース1224を含む。たとえば、ネットワーク・インターフェース1224は、LTE、WCDMA(登録商標)、UMTS、GSM、CDMA2000などを介する通信の能力を有し得る。ワイヤレス・アンテナ1226はまた、ブルートゥース(登録商標)、ブルートゥース(登録商標)LE、Z-Wave、ZigBeeなどのローカル・エリア・ネットワーク、及び/又はLoRaWAN、SigFoxなどのロー・パワー・ワイドエリア・ネットワーク(LPWAN:low power wide-area network)を使用し、環境内の物体(たとえば、車両、モバイル・デバイスなど)の間の通信を可能にすることができる。
【0161】
前述のように、少なくともいくつかの実施例において、自動車プラットフォーム100(
図1を参照)は、自律型車両1200の構成要素でもよい。そのような実施例において、コントローラ1236は、自動車SoC104を含む。
【0162】
図13は、本開示のいくつかの実施例による、
図12の例示的自律型車両1200のカメラ位置及び視野の実例である。カメラ及びそれぞれの視野は、1つの例示的実施例であり、制限することは意図されていない。たとえば、追加の及び/又は代替カメラが含まれ得る、及び/又はカメラは車両1200の異なる位置に置かれ得る。
【0163】
カメラのカメラ・タイプは、車両1200の構成要素及び/又はシステムと使用するようになされ得るデジタル・カメラを含み得るが、これに限定されない。カメラは、自動車安全整合性レベル(ASIL:automotive safety integrity level)Bにおいて及び/又は別のASILにおいて動作することができる。カメラ・タイプは、実施例に応じて、60フレーム/秒(fps)、120fps、240fpsなど、任意の画像キャプチャ・レートの能力を有し得る。カメラは、ロール・シャッタ、グローバル・シャッタ、別のタイプのシャッタ、又はその組合せを使用する能力を有し得る。いくつかの実例では、カラー・フィルタ・アレイは、RCCC(red clear clear clear)カラー・フィルタ・アレイ、RCCB(red clear clear blue)カラー・フィルタ・アレイ、RBGC(red blue green clear)カラー・フィルタ・アレイ、Foveon X3カラー・フィルタ・アレイ、Bayerセンサ(RGGB)カラー・フィルタ・アレイ、モノクロ・センサ・カラー・フィルタ・アレイ、及び/又は別のタイプのカラー・フィルタ・アレイを含み得る。一部の実施例では、RCCC、RCCB、及び/又はRBGCカラー・フィルタ・アレイを有するカメラなどのクリア画素カメラは、光感度を上げるための取り組みにおいて使用され得る。
【0164】
いくつかの実例では、カメラのうちの1つ又は複数が、高度運転者支援システム(ADAS:advanced driver assistance system)機能(たとえば、冗長又はフェイルセーフ設計の一部として)を実行するために使用され得る。たとえば、多機能モノ・カメラは、車線逸脱警報、交通標識アシスト及びインテリジェント・ヘッドランプ制御を含む機能を提供するために設置され得る。カメラのうちの1つ又は複数(たとえば、すべてのカメラ)が、画像データ(たとえば、ビデオ)を同時に記録及び提供することができる。
【0165】
カメラのうちの1つ又は複数は、カメラの画像データ・キャプチャ能力を妨げることがある自動車内からの迷光及び反射(たとえば、フロントガラスのミラーにおいて反射されたダッシュボードからの反射)を取り除くために、カスタム設計された(3D印刷された)部品などの取付部品において取り付けられ得る。サイドミラー取付部品を参照すると、サイドミラー部品は、カメラ取付板がサイドミラーの形状に合うように、カスタム3D印刷され得る。いくつかの実例では、カメラは、サイドミラー内に統合され得る。サイドビュー・カメラについては、カメラはまた、キャビンの各角にある4個の支柱内に統合され得る。
【0166】
車両1200の前の環境の部分を含む視野を有するカメラ(たとえば、前向きのカメラ)は、前向きの進路及び障害物の識別を助け、1つ若しくは複数のコントローラ1236及び/又は制御SoCの助けにより、占有グリッドの生成及び/又は好ましい車両進路の決定に不可欠な情報の提供の提供を助けるための、サラウンド・ビューのために使用され得る。前向きのカメラは、緊急ブレーキ、歩行者検出、及び衝突回避を含む、LIDARと同じADAS機能の多くを実行するために使用され得る。前向きのカメラはまた、車線逸脱警報(「LDW(Lane Departure Warning)」)、自律的クルーズ制御(「ACC(Autonomous Cruise Control)」)、及び/又は交通標識認識などの他の機能を含むADAS機能及びシステムのために使用され得る。
【0167】
様々なカメラが、たとえば、CMOS(complementary metal oxide semiconductor)カラー画像化装置を含む単眼カメラ・プラットフォームを含む、前向きの構成において使用され得る。別の実例は、周辺(たとえば、歩行者、交差する交通又は自転車)からのビューに入る物体を把握するために使用され得るワイドビュー・カメラ1270でもよい。
図13にはワイドビュー・カメラは1つだけ示されているが、車両1200には任意の数のワイドビュー・カメラ1270が存在し得る。加えて、長距離カメラ1298(たとえば、ロングビュー・ステレオ・カメラ・ペア)が、特に、ニューラル・ネットワークがまだトレーニングされていない物体について、深度ベースの物体検出のために使用され得る。長距離カメラ1298はまた、物体検出及び分類、並びに基本物体追跡のために使用され得る。
【0168】
1つ又は複数のステレオ・カメラ1268もまた、前向きの構成に含まれ得る。ステレオ・カメラ1268は、単一のチップ上に統合されたCAN又はイーサネット(登録商標)・インターフェースを有するプログラマブル論理(たとえば、FPGA)及びマルチコア・マイクロプロセッサを提供し得る、拡張可能な処理ユニットを含む統合された制御ユニットを含み得る。そのようなユニットは、画像内のすべてのポイントの距離推定値を含む、車両の環境の3Dマップを生成するために使用され得る。代替ステレオ・カメラ1268は、2個のカメラ・レンズ(左と右に1つずつ)と、車両から対象物体までの距離を測定する及び生成された情報(たとえば、メタデータ)を使用して自律的緊急ブレーキ及び車線逸脱警報機能をアクティブにすることができる画像処理チップとを含み得る、コンパクト・ステレオ・ビジョン・センサを含み得る。他のタイプのステレオ・カメラ1268が、本明細書に記載のものに加えて、又はそれらの代わりに、使用されてもよい。
【0169】
車両1200の側面に対する環境の部分を含む視野を有するカメラ(たとえば、サイドビュー・カメラ)が、占有グリッドを作成及び更新するために並びに側面衝撃衝突警報を生成するために使用される情報を提供する、サラウンド・ビューのために使用され得る。たとえば、サラウンド・カメラ1274(たとえば、
図13に示されるような4個のサラウンド・カメラ1274)は、車両1200の周りに位置付けられ得る。サラウンド・カメラ1274は、ワイドビュー・カメラ1270、魚眼カメラ、360度カメラ、及び/又は同類のものを含み得る。たとえば、4個の魚眼カメラが、車両の前、後ろ、及び側面に配置され得る。代替配置において、車両は、3個のサラウンド・カメラ1274(たとえば、左、右、及び後部)を使用してもよく、第4のサラウンド・ビュー・カメラとして1つ又は複数の他のカメラ(たとえば、前向きのカメラ)を活用してもよい。
【0170】
車両1200の後ろに対する環境の部分を含む視野を有するカメラ(たとえば、後方確認カメラ)が、駐車支援、サラウンド・ビュー、後部衝突警報、並びに占有グリッドの作成及び更新のために使用され得る。本明細書に記載のように、前向きのカメラ(たとえば、長距離及び/又は中距離カメラ1298、ステレオ・カメラ1268)、赤外線カメラ1272など)としても適したカメラを含むがこれらに限定されない、多種多様なカメラが使用され得る。
【0171】
図14は、本開示のいくつかの実施例による、
図12の例示的自律型車両1200の例示的システム・アーキテクチャのブロック図である。本明細書に記載されているこの及び他の配置は単に実例として説明されていることを理解されたい。他の配置及び要素(たとえば、マシン、インターフェース、機能、順番、機能のグループ分けなど)が、示されたものに加えて又はこれらに代わって使用されてもよく、いくつかの要素はともに除外されてもよい。さらに、本明細書に記載の要素の多くは、個別の又は分散された構成要素として又は他の構成要素と併せて、並びに任意の適切な組合せ及び場所において、実装され得る機能エンティティである。エンティティによって実行されるものとして本明細書に記載された様々な機能は、ハードウェア、ファームウェア、及び/又はソフトウェアによって実施され得る。たとえば、様々な機能が、メモリに記憶された命令を実行するプロセッサによって実施され得る。
【0172】
図14の車両1200の構成要素、特徴、及びシステムのそれぞれは、バス1202を介して接続されるものとして図示されている。バス1202は、コントローラ・エリア・ネットワーク(CAN)データ・インターフェース(或いは、「CANバス」と称される)を含み得る。CANは、ブレーキ、加速度、ブレーキ、ステアリング、フロント・ガラス・ワイパなどの作動など、車両1200の様々な特徴及び機能の制御を助けるために使用される車両1200内のネットワークでもよい。CANバスは、それぞれが独自の一意の識別子(たとえば、CAN ID)を有する、数ダース又は数百ものノードを有するように構成され得る。CANバスは、ハンドル角度、対地速度、1分間のエンジン回転(RPM:revolutions per minute)、ボタン位置、及び/又は他の車両状況指標を見つけるために読み取られ得る。CANバスは、ASIL B準拠でもよい。
【0173】
バス1202は、CANバスであるものとして本明細書に記載されているが、これは制限することを意図されていない。たとえば、CANバスに加えて、又はこのその代替として、FlexRay及び/又はイーサネット(登録商標)が使用されてもよい。加えて、単一の線が、バス1202を表すために使用されているが、これは制限することを意図されていない。たとえば、1つ若しくは複数のCANバス、1つ若しくは複数のFlexRayバス、1つ若しくは複数のイーサネット(登録商標)・バス、及び/又は異なるプロトコルを使用する1つ若しくは複数の他のタイプのバスを含み得る、任意の数のバス1202が存在し得る。いくつかの実例では、2個以上のバス1202が、異なる機能を実行するために使用され得る、及び/又は冗長性のために使用され得る。たとえば、第1のバス1202は衝突回避機能のために使用されてもよく、第2のバス1202は作動制御のために使用されてもよい。任意の実例において、各バス1202は、車両1200の構成要素のいずれかと通信し得、2個以上のバス1202が同じ構成要素と通信し得る。いくつかの実例では、車両内の各SoC1204、各コントローラ1236、及び/又は各コンピュータは、同じ入力データ(たとえば、車両1200のセンサからの入力)へのアクセスを有し得、CANバスなどの共通バスに接続され得る。
【0174】
車両1200は、
図12に関して本明細書で説明されるものなど、1つ又は複数のコントローラ1236を含み得る。コントローラ1236は、様々な機能のために使用され得る。コントローラ1236は、車両1200の様々な他の構成要素及びシステムのいずれかに連結されてもよく、車両1200、車両1200の人工知能、車両1200のためのインフォテインメント、及び/又は同類のものの制御のために使用され得る。
【0175】
車両1200は、システム・オン・チップ(SoC)1204を含み得る。SoC1204は、CPU1206、GPU1208、プロセッサ1210、キャッシュ1212、加速装置1214、データ・ストア1216、及び/又は図示されていない他の構成要素及び特徴を含み得る。SoC1204は、様々なプラットフォーム及びシステム内の車両1200を制御するために使用され得る。たとえば、SoC1204は、1つ又は複数のサーバ(たとえば、
図15のサーバ1278)からネットワーク・インターフェース1224を介してマップのリフレッシュ及び/又は更新を取得することができるHDマップ1222を有するシステム(たとえば、車両1200のシステム)において結合され得る。
【0176】
CPU1206は、CPUクラスタ又はCPU複合体(或いは、「CCPLEX」とも称される)を含み得る。CPU1206は、複数のコア及び/又はL2キャッシュを含み得る。たとえば、一部の実施例では、CPU1206は、コヒーレント・マルチプロセッサ構成内の8個のコアを含み得る。一部の実施例では、CPU1206は、4個のデュアルコア・クラスタを含むことができ、各クラスタが専用のL2キャッシュ(たとえば、2MBL2キャッシュ)を有する。CPU1206(たとえば、CCPLEX)は、CPU1206のクラスタの任意の組合せが任意の所与の時間にアクティブになることを可能にする同時クラスタ動作をサポートするように構成され得る。
【0177】
CPU1206は、以下の特徴のうちの1つ又は複数を含む電力管理能力を実装することができる:個別ハードウェア・ブロックが、動的電力を節約するためにアイドル状態のときに自動的にクロック・ゲーティングされ得る、各コア・クロックは、WFI/WFE命令の実行により命令をコアがアクティブに実行していないときにゲーティングされ得る、各コアは、独立してパワー・ゲーティングされ得る、各コア・クラスタは、すべてのコアがクロック・ゲーティングされる若しくはパワー・ゲーティングされるときに、独立してクロック・ゲーティングされ得る、及び/又は、各コア・クラスタは、すべてのコアがパワー・ゲーティングされるときに、独立してパワー・ゲーティングされ得る。CPU1206は、電力状態を管理するための強化されたアルゴリズムをさらに実装することができ、そこでは、許容される電力状態及び予想されるウェイクアップ時間が指定され、ハードウェア/マイクロ・コードが、コア、クラスタ、及びCCPLEXに入力するための最良の電力状態を決定する。処理コアは、作業がマイクロ・コードにオフロードされたソフトウェアにおける簡略化された電力状態入力シーケンスをサポートすることができる。
【0178】
GPU1208は、統合されたGPU(或いは本明細書において「iGPU」と称される)を含み得る。GPU1208は、プログラマブルになり得、並行のワークロードに効率的になり得る。一部の実例では、GPU1208は、強化されたテンソル命令セットを使用することができる。GPU1208は、1つ又は複数のストリーミング・マイクロプロセッサを含み得、そこで、各ストリーミング・マイクロプロセッサは、L1キャッシュ(たとえば、少なくとも96KB記憶容量を有するL1キャッシュ)を含み得、ストリーミング・マイクロプロセッサのうちの2個以上が、キャッシュ(たとえば、512KB記憶容量を有するL2キャッシュ)を共用し得る。一部の実施例では、GPU1208は、少なくとも8個のストリーミング・マイクロプロセッサを含み得る。GPU1208は、コンピュータ・ベースのアプリケーション・プログラミング・インターフェース(API)を使用することができる。加えて、GPU1208は、1つ若しくは複数の並行のコンピューティング・プラットフォーム及び/又はプログラミング・モデル(たとえば、NVIDIAのCUDA)を使用することができる。
【0179】
GPU1208は、自動車の及び組み込まれた使用事例における最高のパフォーマンスのために電力最適化され得る。たとえば、GPU1208は、FinFET(Fin field-effect transistor)上に製造され得る。しかしながら、これは制限することを意図されておらず、GPU1208は、他の半導体製造プロセスを使用し、製造され得る。各ストリーミング・マイクロプロセッサは、複数のブロックに区切られたいくつかの混合精度処理コアを組み込むことができる。限定ではなく、たとえば、64 PF32コア及び32 PF64コアは、4個の処理ブロックに区切られてもよい。そのような実例では、各処理ブロックは、16 FP32コア、8 FP64コア、16 INT32コア、深層学習行列演算のための2個の混合精度NVIDIAテンソル・コア、L0命令キャッシュ、ワープ・スケジューラ、発送ユニット、及び/又は64KBレジスタ・ファイルを割り当てられ得る。加えて、ストリーミング・マイクロプロセッサは、計算及びアドレス指定演算の混合を有するワークロードの効率的な実行を提供するための独立した並行の整数及び浮動小数点データ進路を含み得る。ストリーミング・マイクロプロセッサは、並行スレッドの間のより高い細粒度の同期及び連携を可能にするために、独立したスレッド・スケジューリング能力を含み得る。ストリーミング・マイクロプロセッサは、プログラミングを単純化しつつ性能を向上させるために、結合されたL1データ・キャッシュ及び共用メモリ・ユニットを含み得る。
【0180】
GPU1208は、一部の実例では、900GB/秒のピーク・メモリ帯域幅に関して、提供するための高帯域幅メモリ(HBM:high bandwidth memory)及び/又は16GBHBM2メモリ・サブシステムを含み得る。いくつかの実例では、HBMメモリに加えて、又はこれの代わりに、グラフィックス・ダブル・データ・レート・タイプ5同期ランダム・アクセス・メモリ(GDDR5:graphics double data rate type five synchronous random-access memory)などの同期グラフィックス・ランダム・アクセス・メモリ(SGRAM:synchronous graphics random-access memory)が使用され得る。
【0181】
GPU1208は、メモリ・ページに最も頻繁にアクセスするプロセッサへのそれらのメモリ・ページのより正確な移動を可能にするためにアクセス・カウンタを含む統一されたメモリ技術を含むことができ、それにより、プロセッサ間で共用される記憶範囲の効率を向上させる。いくつかの実例では、アドレス変換サービス(ATS:address translation service)サポートが、GPU1208がCPU1206ページ・テーブルに直接アクセスすることを可能にするために使用され得る。そのような実例では、GPU1208メモリ管理ユニット(MMU:memory management unit)がミスを経験するとき、アドレス変換要求が、CPU1206に送信され得る。応答して、CPU1206は、アドレスの仮想対現実マッピングのためのそのページ・テーブルを調べることができ、GPU1208に変換を送り返す。そのようなものとして、統一されたメモリ技術は、CPU1206とGPU1208との両方のメモリの単一統一仮想アドレス空間を可能にすることができ、それによりGPU1208へのアプリケーションのGPU1208プログラミング及び移植を単純化する。
【0182】
加えて、GPU1208は、他のプロセッサのメモリへのGPU1208のアクセスの頻度を記録することができるアクセス・カウンタを含み得る。アクセス・カウンタは、メモリ・ページが最も頻繁にそのページにアクセスしているプロセッサの物理メモリに移動されることを確実にするのを助けることができる。
【0183】
SoC1204は、本明細書に記載のものを含む任意の数のキャッシュ1212を含み得る。たとえば、キャッシュ1212は、CPU1206とGPU1208との両方に利用可能な(たとえば、CPU1206とGPU1208との両方に接続された)L3キャッシュを含み得る。キャッシュ1212は、キャッシュ・コヒーレンス・プロトコル(たとえば、MEI、MESI、MSIなど)を使用することなどによって、線の状態を記録することができるライトバック・キャッシュを含み得る。L3キャッシュは、より小さいキャッシュ・サイズが使用されてもよいが、実施例に応じて、4MB以上を含み得る。
【0184】
SoC1204は、車両1200の様々なタスク又は動作のいずれか(たとえば、処理DNN)に関して処理を実行する際に活用され得る論理演算ユニット(ALU:arithmetic logic unit)を含み得る。加えて、SoC1204は、システム内で数学演算を実行するための浮動小数点演算ユニット(FPU:floating point unit)(又は他のマス・コプロセッサ又は数値演算コプロセッサ・タイプ)を含み得る。たとえば、SoC104は、CPU1206及び/又はGPU1208内の実行ユニットとして統合された1つ又は複数のFPUを含み得る。
【0185】
SoC1204は、1つ又は複数の加速装置1214(たとえば、ハードウェア・加速装置、ソフトウェア・加速装置、又はその組合せ)を含み得る。たとえば、SoC1204は、最適化されたハードウェア加速装置及び/又は大きなオンチップ・メモリを含み得る、ハードウェア加速クラスタを含み得る。大きなオンチップメモリ(たとえば、4MBのSRAM)は、ハードウェア加速クラスタがニューラル・ネットワーク及び他の演算を加速することを可能にし得る。ハードウェア加速クラスタは、GPU1208を補完するために及びGPU1208のタスクの一部をオフロードするために(たとえば、他のタスクを実行するためのGPU1208のより多くのサイクルを解放するために)使用され得る。一実例として、加速装置1214は、加速に適するように十分に安定している対象ワークロード(たとえば、知覚、畳み込みニューラル・ネットワーク(CNN:convolutional neural network)など)のために使用され得る。本明細書では、「CNN」という用語は、領域ベースの又は領域的畳み込みニューラル・ネットワーク(RCNN:regional convolutional neural network)及び高速RCNN(たとえば、物体検出のために使用されるものとしての)を含む、すべてのタイプのCNNを含み得る。
【0186】
加速装置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データ・タイプをサポートする、単一インスタンス畳み込み機能、並びにポストプロセッサ機能を含む、いくつかの機能を実行することができる。
【0187】
DLAは、以下を含むがこれらに限定されない、様々な機能のいずれかのために処理済み又は未処理のデータでニューラル・ネットワーク、特にCNN、を迅速に及び効率的に実行することができる:カメラ・センサからのデータを使用する物体識別及び検出のためのCNN、カメラ・センサからのデータを使用する距離推定のためのCNN、マイクロフォンからのデータを使用する緊急車両検出及び識別及び検出のためのCNN、カメラ・センサからのデータを使用する顔認識及び車両所有者識別のためのCNN、及び/又は、セキュリティ及び/又は安全性関連イベントのためのCNN。
【0188】
DLAは、GPU1208の任意の機能を実行することができ、そして、推論加速装置を使用することによって、たとえば、設計者は、任意の機能のためにDLA又はGPU1208のいずれかを対象にすることができる。たとえば、設計者は、DLA上のCNN及び浮動小数点演算の処理に重点的に取り組み、他の機能をGPU1208及び/又は他の加速装置1214に任せることができる。
【0189】
加速装置1214(たとえば、ハードウェア加速クラスタ)は、或いはコンピュータ・ビジョン加速装置と本明細書で称され得るプログラマブル・ビジョン加速装置(PVA:programmable vision accelerator)を含み得る。PVAは、高度運転者支援システム(ADAS:advanced driver assistance system)、自律運転、及び/又は拡張現実(AR:augmented reality)及び/又は仮想現実(VR:virtual reality)アプリケーションのためのコンピュータ・ビジョン・アルゴリズムを加速するように設計及び構成され得る。PVAは、パフォーマンスと柔軟性との間のバランスをもたらすことができる。たとえば、各PVAは、たとえば、任意の数の縮小命令セット・コンピュータ(RISC:reduced instruction set computer)コア、直接メモリ・アクセス(DMA:direct memory access)、及び/又は任意の数のベクトル・プロセッサを含み得るが、これらに限定されない。
【0190】
RISCコアは、画像センサ(たとえば、本明細書に記載のカメラのうちのいずれかのカメラの画像センサ)、画像信号プロセッサ、及び/又は同類のものと相互作用することができる。それぞれのRISCコアは、任意の量のメモリを含み得る。RISCコアは、実施例に応じて、いくつかのプロトコルのいずれかを使用することができる。いくつかの実例では、RISCコアは、リアルタイム・オペレーティング・システム(RTOS:real-time operating system)を実行することができる。RISCコアは、1つ若しくは複数の集積回路デバイス、特定用途向け集積回路(ASIC)、及び/又はメモリ・デバイスを使用して、実装され得る。たとえば、RISCコアは、命令キャッシュ及び/又はしっかりと結合されたRAMを含み得る。
【0191】
DMAは、CPU1206から独立したシステム・メモリにPVAの構成要素がアクセスすることを可能にし得る。DMAは、多次元アドレス指定及び/又は循環アドレス指定をサポートすることを含むがこれに限定されないPVAに最適化をもたらすために使用される任意の数の特徴をサポートすることができる。いくつかの実例では、DMAは、ブロック幅、ブロック高さ、ブロック深度、水平ブロック・ステッピング、垂直ブロック・ステッピング、及び/又は深度ステッピングを含み得る、6次元まで又はそれ以上のアドレス指定をサポートすることができる。
【0192】
ベクトル・プロセッサは、コンピュータ・ビジョン・アルゴリズムのプログラミングを効率的に柔軟に実行する及び信号処理能力を提供するように設計され得るプログラマブル・プロセッサでもよい。いくつかの実例では、PVAは、PVAコア及び2個のベクトル処理サブシステム・パーティションを含み得る。PVAコアは、プロセッサ・サブシステム、DMAエンジン(たとえば、2個のDMAエンジン)、及び/又は他の周辺装置を含み得る。ベクトル処理サブシステムは、PVAの1次的処理エンジンとして動作することができ、ベクトル処理ユニット(VPU:vector processing unit)、命令キャッシュ、及び/又はベクトル・メモリ(たとえば、VMEM)を含み得る。VPUコアは、たとえば、単一の命令、複数のデータ(SIMD)、超長命令語(VLIW:very long instruction word)デジタル信号プロセッサなど、デジタル信号プロセッサを含み得る。SIMD及びVLIWの組合せは、スループット及びスピードを高めることができる。
【0193】
それぞれのベクトル・プロセッサは、命令キャッシュを含み得、専用のメモリに連結され得る。結果として、一部の実例では、それぞれのベクトル・プロセッサは、他のベクトル・プロセッサから独立して実行するように構成され得る。他の実例において、特定のPVAに含まれるベクトル・プロセッサは、データ並列処理を用いるように構成され得る。たとえば、一部の実施例では、単一のPVAに含まれる複数のベクトル・プロセッサは、同じコンピュータ・ビジョン・アルゴリズムを、しかし画像の異なる領域上で、実行することができる。他の実例において、特定のPVAに含まれるベクトル・プロセッサは、異なるコンピュータ・ビジョン・アルゴリズムを、同じ画像上で、同時に実行することができ、或いは順次画像又は画像の部分で異なるアルゴリズムを実行することさえできる。特に、任意の数のPVAは、ハードウェア加速クラスタに含まれ得、任意の数のベクトル・プロセッサは、それぞれのPVAに含まれ得る。加えて、PVAは、全体的システム安全性を高めるために、追加のエラー訂正コード(ECC:error correcting code)メモリを含み得る。
【0194】
加速装置1214(たとえば、ハードウェア加速クラスタ)は、加速装置1214のための高帯域幅、低レイテンシSRAMを提供するための、コンピュータ・ビジョン・ネットワーク・オンチップ及びSRAMを含み得る。いくつかの実例では、オンチップ・メモリは、たとえば、そして制限ではなく、PVAとDLAとの両方によってアクセス可能でもよい、8個のフィールド構成可能なメモリ・ブロックから成る、少なくとも4MBのSRAMを含み得る。各ペアのメモリ・ブロックは、高度周辺バス(APB:advanced peripheral bus)インターフェース、構成回路、コントローラ、及びマルチプレクサを含み得る。任意のタイプのメモリが、使用され得る。PVA及びDLAは、メモリへの高速アクセスを有するPVA及びDLAを提供するバックボーンを介してメモリにアクセスすることができる。バックボーンは、(たとえば、APBを使用して)PVA及びDLAをメモリに相互接続するコンピュータ・ビジョン・ネットワーク・オンチップを含み得る。
【0195】
コンピュータ・ビジョン・ネットワーク・オンチップは、PVAとDLAとの両方が作動可能及び有効信号を提供することを、任意の制御信号/アドレス/データの送信の前に、決定するインターフェースを含み得る。そのようなインターフェースは、制御信号/アドレス/データを送信するための別個のフェーズ及び別個のチャネル、並びに連続的データ転送のためのバーストタイプの通信を提供することができる。このタイプのインターフェースは、ISO26262又はIEC61508規格に従うことができるが、他の規格及びプロトコルが使用されてもよい。
【0196】
いくつかの実例では、SoC1204は、米国特許出願第16/101,232号に記載されるような、リアルタイム・レイトレーシング・ハードウェア加速装置を含み得る。リアルタイム・レイトレーシング・ハードウェア加速装置は、RADAR信号解釈のための、音響伝播合成及び/又は分析のための、SONARシステムのシミュレーションのための、一般波伝播シミュレーションのための、ローカリゼーション及び/又は他の機能を目的とするLIDARデータに対する比較のための、及び/又は他の使用のための、リアルタイム視覚化シミュレーションを生成するために、(たとえば、世界モデル内の)物体の位置及び規模を迅速に効率的に決定するために使用され得る。一部の実施例では、1つ又は複数の木の走査ユニット(TTU:tree traversal unit)が、1つ又は複数のレイトレーシング関連動作を実行するために使用され得る。
【0197】
加速装置1214(たとえば、ハードウェア加速装置クラスタ)は、自律運転のための多様な用途を有する。PVAは、ADAS及び自律型車両における極めて重要な処理段階に使用され得るプログラマブル・ビジョン加速装置でもよい。PVAの能力は、低電力及び低レイテンシにおいて、予測可能な処理を必要とするアルゴリズムの領域にふさわしい。言い換えれば、PVAは、低レイテンシ及び低電力とともに予測可能な実行時間を必要とする、小さなデータ集合上でも、半高密度の又は高密度の通常の計算で上手く機能する。それ故に、PVAは、物体検出及び整数計算での動作において効率的であるので、自律型車両のためのプラットフォームとの関連で、PVAは、クラシック・コンピュータ・ビジョン・アルゴリズムを実行するように設計される。
【0198】
たとえば、本技術の1つの実施例によれば、PVAは、コンピュータ・ステレオ・ビジョンを実行するために使用される。半グローバルなマッチングベースのアルゴリズムが、一部の実例では使用され得るが、これは制限することを意図されていない。レベル3~5の自律運転のための多数のアプリケーションは、動き推定/ステレオ・マッチング・オンザフライ(たとえば、SFM(structure from motion)、歩行者認識、レーン検出など)を必要とする。PVAは、2個の単眼カメラからの入力でコンピュータ・ステレオ・ビジョン機能を実行することができる。
【0199】
いくつかの実例において、PVAは、高密度のオプティカル・フローを実行するために使用され得る。たとえば、PVAは、次のRADARパルスを放射する前に処理済みのRADAR信号を提供するために未加工のRADARデータを処理する(たとえば、4D高速フーリエ変換を使用して)ために使用され得る。他の実例において、PVAは、たとえば、飛行データの未加工の時間を処理して飛行データの処理済み時間を提供することにより、飛行深度処理の時間に使用される。
【0200】
DLAは、たとえば、各物体検出の信頼性の測定値を出力するニューラル・ネットワークを含む、制御及び運転安全性を強化するために任意のタイプのネットワークを実行するために使用され得る。そのような信頼性値は、確率として、又は他の検出と比較した各検出の相対的「重み」を提供するものとして、解釈され得る。この信頼性値は、どの検出が誤判定検出ではなくて真陽性検出と考えられるべきであるかに関するさらなる決定をシステムが行うことを可能にする。たとえば、システムは、信頼性の閾値を設定し、真陽性検出としての閾値を超える検出のみを考慮することができる。自動非常ブレーキ(AEB:automatic emergency braking)システムにおいて、誤判定検出は、車両に非常ブレーキを自動で実行させることになり、これは明らかに望ましくない。したがって、最も確信のある検出のみが、AEBのトリガとして考えられるべきである。DLAは、信頼性値を回帰するニューラル・ネットワークを実行し得る。ニューラル・ネットワークは、境界ボックス次元、(たとえば、別のサブシステムから)取得されたグラウンド・プレーン推定、ニューラル・ネットワーク及び/又は他のセンサ(たとえば、LIDARセンサ1264又はRADARセンサ1260)から取得された物体の車両1200方位、距離、3D位置推定と相関する慣性計測装置(IMU:inertial measurement unit)センサ1266出力、その他など、少なくともいくつかのサブセットのパラメータをその入力として受け取ることができる。
【0201】
SoC1204は、データ・ストア1216(たとえば、メモリ)を含み得る。データ・ストア1216は、SoC1204のオンチップ・メモリでもよく、GPU及び/又はDLAで実行されることになるニューラル・ネットワークを記憶することができる。いくつかの実例では、データ・ストア1216は、冗長性及び安全性のためにニューラル・ネットワークの複数のインスタンスを記憶するのに十分な大きさの容量を有し得る。データ・ストア1216は、L2又はL3キャッシュ1212を含み得る。データ・ストア1216の参照は、本明細書に記載のような、PVA、DLA、及び/又は他の加速装置1214に関連するメモリの参照を含み得る。
【0202】
SoC1204は、1つ又は複数のプロセッサ1210(たとえば、組み込まれたプロセッサ)を含み得る。プロセッサ1210は、ブート電力及び管理能力及び関連するセキュリティ施行を処理するための専用のプロセッサ及びサブシステムでもよいブート及び電力管理プロセッサを含み得る。ブート及び電力管理プロセッサは、SoC1204ブート・シーケンスの一部でもよく、実行時間電力管理サービスを提供することができる。ブート電力及び管理プロセッサは、クロック及び電圧プログラミング、システム低電力状態移行の支援、SoC1204熱及び温度センサの管理、及び/又はSoC1204電力状態の管理を提供することができる。各温度センサは、その出力頻度が温度に比例するリング発振器として実装されてもよく、SoC1204は、リング発振器を使用してCPU1206、GPU1208、及び/又は加速装置1214の温度を検出することができる。温度が、閾値を超えたと判定された場合、ブート及び電力管理プロセッサは、温度障害ルーティンに入り、SoC1204をより低い電力状態に置く及び/又は車両1200をショーファーの安全停止モードにする(たとえば、車両1200を安全停止させる)ことができる。
【0203】
プロセッサ1210は、オーディオ処理エンジンの機能を果たし得る1セットの組み込まれたプロセッサをさらに含み得る。オーディオ処理エンジンは、複数のインターフェースを介するマルチチャネル・オーディオの完全なハードウェア・サポートとオーディオI/Oインターフェースの広く柔軟な範囲とを可能にするオーディオ・サブシステムでもよい。いくつかの実例では、オーディオ処理エンジンは、専用のRAMを有するデジタル信号プロセッサを有する専用のプロセッサ・コアである。
【0204】
プロセッサ1210は、低電力センサ管理及びウェイク使用事例をサポートするための必要なハードウェア特徴を提供することができる常時オンのプロセッサ・エンジンをさらに含み得る。常時オンのプロセッサ・エンジンは、プロセッサ・コア、しっかりと結合されたRAM、支援周辺装置(たとえば、タイマ及び割り込みコントローラ)、様々なI/Oコントローラ周辺装置、及びルーティング論理を含み得る。
【0205】
プロセッサ1210は、自動車のアプリケーションの安全性管理を処理するために専用のプロセッサ・サブシステムを含む安全性クラスタ・エンジンをさらに含み得る。安全性クラスタ・エンジンは、2個以上のプロセッサ・コア、しっかりと結合されたRAM、サポート周辺装置(たとえば、タイマ、割り込みコントローラなど)、及び/又はルーティング論理を含み得る。安全性モードにおいて、2個以上のコアは、ロックステップ・モードにおいて動作し、それらの動作の間の何らかの差を検出するための比較論理を有する単一のコアとして機能することができる。
【0206】
プロセッサ1210は、リアルタイム・カメラ管理を処理するための専用のプロセッサ・サブシステムを含み得るリアルタイム・カメラ・エンジンをさらに含み得る。
【0207】
プロセッサ1210は、カメラ処理パイプラインの一部であるハードウェア・エンジンである画像信号プロセッサを含み得る高ダイナミック・レンジ信号プロセッサをさらに含み得る。
【0208】
プロセッサ1210は、プレイヤ・ウインドウのための最終的画像を生み出すためにビデオ再生アプリケーションによって必要とされるビデオ処理後機能を実装する処理ブロック(たとえば、マイクロプロセッサに実装された)でもよいビデオ画像合成器を含み得る。ビデオ画像合成器は、ワイドビュー・カメラ1270で、サラウンド・カメラ1274で、及び/又はキャビン内監視カメラ・センサでレンズ歪み補正を実行することができる。キャビン内監視カメラ・センサは好ましくは、キャビン内イベントを識別し、適切に応答するように構成された、高度SoCの別のインスタンス上で実行するニューラル・ネットワークによって監視される。キャビン内システムは、セルラ・サービスをアクティブにする及び電話をかける、電子メールを書き取らせる、車両の目的地を変更する、車両のインフォテインメント・システム及び設定をアクティブにする又は変更する、或いは音声起動型ウェブ・サーフィンを提供するために、読唇術を実行することができる。ある特定の機能は、自律モードで動作しているときにのみ運転者に利用可能であり、そうでない場合には無効にされる。
【0209】
ビデオ画像合成器は、空間的ノイズ低減及び時間的ノイズ低減の両方のための強化された時間的ノイズ低減を含み得る。たとえば、動きがビデオ内で生じた場合、ノイズ低減は、隣接するフレームによって提供される情報の重みを減らし、空間的情報に適切に重みを加える。画像又は画像の一部が動きを含まない場合、ビデオ画像合成器によって実行される時間的ノイズ低減は、前の画像からの情報を使用して現在の画像におけるノイズを減らすことができる。
【0210】
ビデオ画像合成器はまた、入力ステレオ・レンズ・フレーム上でステレオ・レクティフィケーションを実行するように構成され得る。ビデオ画像合成器はさらに、オペレーティング・システム・デスクトップが使用中であるときにユーザ・インターフェース合成のために使用することができ、GPU1208は、新しい表面を連続してレンダリングために必要とされない。GPU1208の電源が入れられ、3Dレンダリングをアクティブに実行しているときでも、ビデオ画像合成器は、GPU1208をオフロードしてパフォーマンス及び反応性を向上させるために使用され得る。
【0211】
SoC1204は、カメラからビデオ及び入力を受信するためのモバイル・インダストリ・プロセッサ・インターフェース(MIPI:mobile industry processor interface)カメラ・シリアル・インターフェース、高速インターフェース、及び/又は、カメラ及び関連画素入力機能のために使用され得るビデオ入力ブロックをさらに含み得る。SoC1204は、ソフトウェアによって制御され得る、及び特定の役割にコミットされていないI/O信号を受信するために使用され得る、入力/出力コントローラをさらに含み得る。
【0212】
SoC1204は、周辺装置、オーディオ・コーデック、電力管理、及び/又は他のデバイスとの通信を可能にするために、広範囲の周辺インターフェースをさらに含み得る。SoC1204は、(たとえば、ギガビット・マルチメディア・シリアル・リンク及びイーサネット(登録商標)を介して接続された)カメラからのデータ、センサ(たとえば、イーサネット(登録商標)を介して接続され得るLIDARセンサ1264、RADARセンサ1260など)、バス1202からのデータ(たとえば、車両1200のスピード、ハンドル位置など)、(たとえば、イーサネット(登録商標)又はCANバスを介して接続された)GNSSセンサ1258からのデータを処理するために使用され得る。SoC1204は、独自のDMAエンジンを含み得る及びルーティン・データ管理タスクからCPU1206を解放するために使用され得る専用の高性能大容量記憶コントローラをさらに含み得る。
【0213】
SoC1204は、自動化レベル3~5に広がる柔軟なアーキテクチャを有する終端間プラットフォームでもよく、それによって、多様性及び冗長性のためにコンピュータ・ビジョン及びADAS技法を活用し、効率的に使用し、深層学習ツールとともに、柔軟な、信頼できる運転ソフトウェア・スタックのためのプラットフォームを提供する、総合的機能的安全性アーキテクチャを提供する。SoC1204は、従来のシステムよりも高速で、信頼でき、さらにエネルギ効率がよく、空間効率がよくなり得る。たとえば、加速装置1214が、CPU1206と結合されるとき、GPU1208、及びデータ・ストア1216は、レベル3~5の自律型車両のための高速で効率的なプラットフォームを提供することができる。
【0214】
したがって、本技術は、従来のシステムによって達成することができない能力及び機能性をもたらす。たとえば、コンピュータ・ビジョン・アルゴリズムは、多種多様な視覚的データにわたり多種多様な処理アルゴリズムを実行するために、Cプログラミング言語などの高レベルのプログラミング言語を使用して構成され得る、CPUで実行され得る。しかしながら、CPUは、しばしば、たとえば、実行時間及び電力消費に関連するものなど、多数のコンピュータ・ビジョン・アプリケーションの性能要件を満たすことができない。具体的には、多数のCPUは、車両内ADASアプリケーションの要件及び実際のレベル3~5の自律型車両の要件である、リアルタイムでの複合物体検出アルゴリズムを実行することができない。
【0215】
従来のシステムとは対照的に、CPU複合体、GPU複合体、及びハードウェア加速クラスタを提供することによって、本明細書に記載の技術は、複数のニューラル・ネットワークが同時に及び/又は連続して実行されることと、レベル3~5の自律運転機能を可能にするために結果が結合されることとを可能にする。たとえば、DLA又はdGPU(たとえば、GPU1220)で実行するCNNは、ニューラル・ネットワークが具体的にトレーニングされていない標識を含む、交通標識をスーパーコンピュータが読み取る及び理解することを可能にする、テキスト及び単語認識を含み得る。DLAは、標識の意味論的理解を識別、解釈、及び提供することと、CPU複合体で実行する進路計画立案モジュールに意味論的理解を渡すこととを行うことができる、ニューラル・ネットワークをさらに含み得る。
【0216】
別の実例として、複数のニューラル・ネットワークは、レベル3、4、又は5の運転に必要とされるように、同時に実行され得る。たとえば、電光とともに、「注意:点滅光は、凍った状態を示す」から成る警告標識は、いくつかのニューラル・ネットワークによって独立して又は集合的に解釈され得る。標識自体は、第1の配備されたニューラル・ネットワーク(たとえば、トレーニングされてあるニューラル・ネットワーク)によって交通標識として識別され得、テキスト「点滅光は、凍った状態を示す」は、点滅光が検出されるときには凍った状態が存在することを車両の進路計画立案ソフトウェア(好ましくはCPU複合体上で実行する)に知らせる、第2の配備されたニューラル・ネットワークによって解釈され得る。点滅光は、点滅光の存在(又は無いこと)を車両の進路計画立案ソフトウェアに知らせ、複数のフレームを介して第3の配備されたニューラル・ネットワークを動作させることによって識別され得る。すべての3個のニューラル・ネットワークは、DLA内及び/又はGPU1208上などで、同時に実行することができる。
【0217】
いくつかの実例では、顔認識及び車両所有者識別のためのCNNは、カメラ・センサからのデータを使用して車両1200の正規の運転者及び/又は所有者の存在を識別することができる。常時オンのセンサ処理エンジンは、所有者が運転席側のドアに近づくときに車両を解錠する及び明かりをつけるために、並びに、セキュリティ・モードにおいて、所有者が車両を離れるときに車両の動作を停止させるために、使用され得る。このようにして、SoC1204は、盗難及び/又は車の乗っ取りに対するセキュリティをもたらす。
【0218】
別の実例では、緊急車両検出及び識別のためのCNNは、マイクロフォン1296からのデータを使用して緊急車両サイレンを検出及び識別することができる。一般分類子を使用してサイレンを検出する及び特徴を手動で抽出する従来のシステムとは対照的に、SoC1204は、環境の及び都市の音の分類、並びに視覚的データの分類のためにCNNを使用する。好ましい一実施例では、DLA上で実行するCNNは、(たとえば、ドップラー効果を使用することによって)緊急車両の相対的終速度を識別するようにトレーニングされる。CNNはまた、GNSSセンサ1258によって識別されるように、車両が稼働しているローカル・エリアに特有の緊急車両を識別するようにトレーニングされ得る。それ故に、たとえば、欧州で稼働しているとき、CNNは、欧州のサイレンを検出しようとすることになり、そして、米国にあるとき、CNNは、北米のサイレンのみを識別しようとすることになる。緊急車両が検出された後は、制御プログラムが、緊急車両が通過するまで、超音波センサ1262の支援を受けて、車両を減速する、道の端に停止させる、車両を駐車する、及び/又は車両をアイドリングさせる、緊急車両安全性ルーティンを実行するために使用され得る。
【0219】
車両は、高速相互接続(たとえば、PCIe)を介してSoC1204に連結され得るCPU1218(たとえば、個別のCPU、又はdCPU)を含み得る。CPU1218は、たとえば、X86プロセッサを含み得る。CPU1218は、たとえば、ADASセンサとSoC1204との間の潜在的に不整合の結果を調停すること、及び/又はコントローラ1236及び/又はインフォテインメントSoC1230の状況及び調子を監視することを含む、様々な機能のいずれかを実行するために使用され得る。
【0220】
車両1200は、高速相互接続(たとえば、NVIDIAのNVLINK)を介してSoC1204に連結され得るGPU1220(たとえば、個別のGPU、又はdGPU)を含み得る。GPU1220は、冗長及び/又は異なるニューラル・ネットワークを実行することなどによって、付加的人工知能機能をもたらすことができ、車両1200のセンサからの入力(たとえば、センサ・データ)に基づいてニューラル・ネットワークをトレーニング及び/又は更新するために使用され得る。
【0221】
車両1200は、1つ又は複数のワイヤレス・アンテナ1226(たとえば、セルラ・アンテナ、ブルートゥース(登録商標)・アンテナなど、異なる通信プロトコルのための1つ又は複数のワイヤレス・アンテナ)を含み得るネットワーク・インターフェース1224をさらに含み得る。ネットワーク・インターフェース1224は、インターネットを介するクラウドとの(たとえば、サーバ1278及び/又は他のネットワーク・デバイスとの)、他の車両との、及び/又は計算デバイス(たとえば、乗客のクライアント・デバイス)とのワイヤレス接続を使用可能にするために使用され得る。他の車両と通信するために、直接リンクが2個の車両の間に確立され得る、及び/又は、間接リンクが(たとえば、ネットワークを通じて及びインターネットを介して)確立され得る。直接リンクは、車両対車両通信リンクを使用し、提供され得る。車両対車両通信リンクは、車両1200に近接する車両(たとえば、車両1200の前の、横の、及び/又は後ろの車両)に関する車両1200情報を提供することができる。この機能は、車両1200の共同適応クルーズ制御機能の一部でもよい。
【0222】
ネットワーク・インターフェース1224は、変調及び復調機能を提供する及びコントローラ1236がワイヤレス・ネットワークを介して通信することを可能にする、SoCを含み得る。ネットワーク・インターフェース1224は、ベースバンドから無線周波数へのアップコンバージョン、及び無線周波数からベースバンドへのダウンコンバージョンのための無線周波数フロントエンドを含み得る。周波数コンバージョンは、よく知られているプロセスを通して実行することができ、及び/又はスーパーヘテロダイン・プロセスを用いて実行することができる。いくつかの実例では、無線周波数フロントエンド機能は、別個のチップによって提供され得る。ネットワーク・インターフェースは、LTE、WCDMA(登録商標)、UMTS、GSM、CDMA2000、ブルートゥース(登録商標)、ブルートゥース(登録商標)LE、Wi-Fi、Z-Wave、ZigBee、LoRaWAN、及び/又は他のワイヤレス・プロトコルを介して通信するためのワイヤレス機能を含み得る。
【0223】
車両1200は、チップ外の(たとえば、SoC1204外の)ストレージを含み得るデータ・ストア1228をさらに含み得る。データ・ストア1228は、RAM、SRAM、DRAM、VRAM、フラッシュ、ハードディスク、及び/又は、少なくとも1ビットのデータを記憶することができる他の構成要素及び/又はデバイスを含む、1つ又は複数の記憶素子を含み得る。
【0224】
車両1200は、マッピング、知覚、占有グリッド生成、及び/又は進路計画策定機能を支援するためのGNSSセンサ1258(たとえば、GPS及び/又は支援されたGPSセンサ)をさらに含み得る。たとえば、シリアル(RS-232)ブリッジへのイーサネット(登録商標)を有するUSBコネクタを使用するGPSを含むが、これに限定されない、任意の数のGNSSセンサ1258が、使用され得る。
【0225】
車両1200は、RADARセンサ1260をさらに含み得る。RADARセンサ1260は、暗闇及び/又は厳しい気象条件においても、長距離車両検出のために車両1200によって使用され得る。RADAR機能安全性レベルは、ASIL Bでもよい。一部の実例では、RADARセンサ1260は、未加工のデータにアクセスするためのイーサネット(登録商標)へのアクセスを用いて、制御のために及び物体追跡データにアクセスするために(たとえば、RADARセンサ1260によって生成されたデータを送信するために)CAN及び/又はバス1202を使用することができる。多種多様なRADARセンサ・タイプが、使用され得る。たとえば、そして制限なしに、RADARセンサ1260は、前部、後部、及び側部RADAR使用に適し得る。一部の実例では、パルス・ドップラーRADARセンサが使用される。
【0226】
RADARセンサ1260は、狭い視野を有する長距離、広い視野を有する短距離、短距離側部カバレッジなど、異なる構成を含み得る。いくつかの実例では、長距離RADARは、適応クルーズ制御機能のために使用され得る。長距離RADARシステムは、250mの範囲内など、2個以上の独立したスキャンによって実現される広い視野を提供することができる。RADARセンサ1260は、静的物体と動く物体との区別を助けることができ、緊急ブレーキ・アシスト及び前方衝突警報のためのADASシステムによって使用され得る。長距離RADARセンサは、複数の(たとえば、6つ以上の)固定RADARアンテナと高速CAN及びFlexRayインターフェースとを有するモノスタティック・マルチモーダルRADARを含み得る。6つのアンテナを有する一実例では、中央の4個のアンテナは、隣接レーン内の交通からの干渉を最小限にして高速で車両1200の周囲を記録するように設計された、集束ビーム・パターンを作成し得る。他の2個のアンテナは、視野を広げることができ、車両1200のレーンに入る又はこれを去る車両を迅速に検出することを可能にする。
【0227】
一実例として、中距離RADARシステムは、1260m(前)又は80m(後)までの範囲、及び42度(前)又は1250度(後)までの視野を含み得る。短距離RADARシステムは、後部バンパの両端に設置されるように設計されたRADARセンサを含み得るが、これに限定されない。後部バンパの両端に設置されるとき、そのようなRADARセンサ・システムは、車両の後ろ及び隣の死角を常に監視する2個のビームを作成することができる。
【0228】
短距離RADARシステムは、死角検出及び/又はレーン変更アシストのためにADASシステムにおいて使用され得る。
【0229】
車両1200は、超音波センサ1262をさらに含み得る。車両1200の前部、後部、及び/又は側部に位置付けられ得る、超音波センサ1262は、駐車アシストのために及び/又は占有グリッドの作成及び更新のために使用され得る。多種多様な超音波センサ1262が使用され得、異なる超音波センサ1262が、異なる範囲の検出(たとえば、2.5m、4m)のために使用され得る。超音波センサ1262は、ASIL Bの機能的安全性レベルにおいて動作することができる。
【0230】
車両1200はLIDARセンサ1264を含み得る。LIDARセンサ1264は、物体及び歩行者検出、緊急ブレーキ、衝突回避、及び/又は他の機能のために使用され得る。LIDARセンサ1264は、機能的安全性レベルASIL Bでもよい。いくつかの実例では、車両1200は、(たとえば、ギガビット・イーサネット(登録商標)・スイッチにデータを提供するために)イーサネット(登録商標)を使用することができる複数の(たとえば、2個、4個、6個などの)LIDARセンサ1264を含み得る。
【0231】
いくつかの実例では、LIDARセンサ1264は、物体及び360度視野のそれらの距離のリストを提供する能力を有し得る。市販のLIDARセンサ1264は、たとえば、2cm~3cmの精度を有し、100Mbpsイーサネット(登録商標)接続のサポートを有して、約100mの広告された範囲を有し得る。いくつかの実例では、1つ又は複数の非突出したLIDARセンサ1264が、使用され得る。そのような実例では、LIDARセンサ1264は、車両1200の前部、後部、側部、及び/又は角に組み込まれ得る小さいデバイスとして実装され得る。そのような実例では、LIDARセンサ1264は、低反射物体についても200mの範囲を有し、120度水平及び35度垂直視野まで提供することができる。前部に取り付けられたLIDARセンサ1264は、45度と135度との間の水平視野向けに構成され得る。
【0232】
いくつかの実例では、3DフラッシュLIDARなどのLIDAR技術もまた使用され得る。3DフラッシュLIDARは、約200mまで車両の周囲を照らすために、送信元としてレーザーのフラッシュを使用する。フラッシュLIDARユニットは、車両から物体までの範囲に順番に対応する、レーザー・パルス走行時間及び各画素上の反射光を記録する、レセプタを含む。フラッシュLIDARは、周囲の高精度の及び歪みのない画像があらゆるレーザー・フラッシュで生成されることを可能にし得る。いくつかの実例では、4個のフラッシュLIDARセンサが、車両1200の各側面に1つずつ、配備され得る。利用可能な3DフラッシュLIDARシステムは、送風機以外に動く部分を有さないソリッドステート3Dステアリング・アレイLIDARカメラ(たとえば、非スキャン型LIDARデバイス)を含む。フラッシュLIDARデバイスは、1フレームにつき5ナノ秒クラスI(目に安全な)レーザー・パルスを使用することができ、3D範囲点群及び共記載された強度データの形で反射レーザー光をキャプチャし得る。フラッシュLIDARを使用することによって、また、フラッシュLIDARは、動く部分を有さないソリッドステート・デバイスであるので、LIDARセンサ1264は、モーション・ブラー、振動、及び/又は衝撃の影響を受けにくくなり得る。
【0233】
車両は、IMUセンサ1266をさらに含み得る。一部の実例では、IMUセンサ1266は、車両1200の後部車軸の中央に位置付けられ得る。IMUセンサ1266は、たとえば、加速度計、磁力計、ジャイロスコープ、磁気コンパス、及び/又は他のセンサ・タイプを含み得るが、これらに限定されない。いくつかの実例では、6軸アプリケーションなどにおいて、IMUセンサ1266は、加速度計及びジャイロスコープを含み得るが、9軸アプリケーションにおいて、IMUセンサ1266は、加速度計、ジャイロスコープ、及び磁力計を含み得る。
【0234】
一部の実施例では、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は、単一の統合されたユニットにおいて結合され得る。
【0235】
車両は、車両1200内及び/又は周囲に置かれたマイクロフォン1296を含み得る。マイクロフォン1296は、中でも、緊急車両検出及び識別のために使用され得る。
【0236】
車両は、ステレオ・カメラ1268、ワイドビュー・カメラ1270、赤外線カメラ1272、サラウンド・カメラ1274、長距離及び/又は中距離カメラ1298、及び/又は他のカメラ・タイプを含む、任意の数のカメラ・タイプをさらに含み得る。カメラは、車両1200の全外面の周りの画像データをキャプチャするために使用され得る。使用されるカメラのタイプは、車両1200の実施例及び要件に応じて決まり、任意の組合せのカメラ・タイプが、車両1200の周りの必要なカバレッジを実現するために使用され得る。加えて、カメラの数は、実施例に応じて異なり得る。たとえば、車両は、6個のカメラ、7個のカメラ、10個のカメラ、12個のカメラ、及び/又は別の数のカメラを含み得る。カメラは、一実例として、ギガビット・マルチメディア・シリアル・リンク(GMSL:Gigabit Multimedia Serial Link)及び/又はギガビット・イーサネット(登録商標)をサポートし得るが、これに限定されない。それぞれのカメラは、
図12及び
図13に関連して本明細書においてさらに詳しく説明される。
【0237】
車両1200は、振動センサ1242をさらに含み得る。振動センサ1242は、車軸など、車両の構成要素の振動を測定することができる。たとえば、振動の変化は、道路の表面の変化を示し得る。別の実例では、2個以上の振動センサ1242が使用されるとき、振動の差は、道路表面の摩擦又は滑りを判定するために使用され得る(たとえば、振動の差が電力駆動車軸と自由回転車軸との間であるとき)。
【0238】
車両1200は、ADASシステム1238を含み得る。一部の実例では、ADASシステム1238は、SoCを含み得る。ADASシステム1238は、自律/適応/自動クルーズ制御(ACC:autonomous/adaptive/automatic cruise control)、共同適応クルーズ制御(CACC:cooperative adaptive cruise control)、前方衝突警報(FCW:forward crash warning)、自動緊急ブレーキ(AEB:automatic emergency braking)、車線逸脱警報(LDW:lane departure warning)、レーン・キープ・アシスト(LKA:lane keep assist)、死角警報(BSW:blind spot warning)、後部交差交通警報(RCTW:rear cross-traffic warning)、衝突警報システム(CWS:collision warning system)、レーン・センタリング(LC:lane centering)、及び/又は他の特徴及び機能を含み得る。
【0239】
ACCシステムは、RADARセンサ1260、LIDARセンサ1264、及び/又はカメラを使用し得る。ACCシステムは、縦ACC及び/又は横ACCを含み得る。縦ACCは、車両1200の直ぐ前の車両までの距離を監視及び制御し、前方の車両からの安全距離を維持するために車両速度を自動的に調整する。横ACCは、距離の保持を実行し、必要なときにレーンを変更するように車両1200にアドバイスする。横ACCは、LC及びCWSなどの他のADASアプリケーションに関連する。
【0240】
CACCは、ワイヤレス・リンクを介して他の車両からネットワーク・インターフェース1224及び/又はワイヤレス・アンテナ1226を介して、或いは間接的にネットワーク接続を介して(たとえば、インターネットを介して)、受信することができる、他の車両からの情報を使用する。直接リンクは、車両対車両(V2V:vehicle-to-vehicle)通信リンクによって提供され得、一方、間接リンクは、インフラストラクチャ対車両(I2V:infrastructure-to-vehicle)通信リンクでもよい。一般に、V2V通信概念は、直前の車両(たとえば、車両1200と同じレーン内にある、車両1200の直ぐ前の車両)に関する情報を提供し、一方、I2V通信概念は、さらに前の交通に関する情報を提供する。CACCシステムは、I2V情報ソースとV2V情報ソースとのいずれか又は両方を含み得る。車両1200の前方の車両の情報を所与として、CACCは、より高信頼になり得、CACCは、交通の流れをよりスムーズにし、道路の渋滞を減らす可能性を有する。
【0241】
運転者が修正行動を取ることができるように、FCWシステムは、危険を運転者に警告するように設計される。FCWシステムは、ディスプレイ、スピーカ、及び/又は振動部品など、運転者フィードバックに電気的に連結された、専用のプロセッサ、DSP、FPGA、及び/又はASICに連結された、前向きのカメラ及び/又はRADARセンサ1260を使用する。FCWシステムは、音響、視覚的警報、振動及び/又はクイック・ブレーキ・パルスなどの形で、警報を提供することができる。
【0242】
AEBシステムは、別の車両又は他の物体との差し迫った前方衝突を検出し、運転者が指定された時間又は距離パラメータ内に修正行動を取らない場合に、ブレーキを自動的に適用することができる。AEBシステムは、専用のプロセッサ、DSP、FPGA、及び/又はASICに連結された、前向きのカメラ及び/又はRADARセンサ1260を使用することができる。AEBシステムが危険を検出するとき、AEBシステムは通常は、先ず、衝突を回避するための修正行動を取るように運転者に警告し、運転者が修正行動を取らない場合、AEBシステムは、予測される衝突の影響を防ぐ、又は少なくとも軽減するための努力の一環としてブレーキを自動的に適用することができる。AEBシステムは、ダイナミック・ブレーキ・サポート及び/又は衝突切迫ブレーキなどの技法を含み得る。
【0243】
LDWシステムは、ハンドル又はシートの振動など、視覚的、可聴式、及び/又は触覚的警報を提供して、車両1200が車線区分線を越えたときに運転者に警告する。LDWシステムは、運転者が、方向指示器を起動することによって、意図的な車線逸脱を指示するときには、起動しない。LDWシステムは、ディスプレイ、スピーカ、及び/又は振動部品など、運転者フィードバックに電気的に連結された、専用のプロセッサ、DSP、FPGA、及び/又はASICに連結された、前側を向いたカメラを使用することができる。
【0244】
LKAシステムは、LDWシステムの変更形態である。LKAシステムは、車両1200が車線をはみ出し始めた場合に車両1200を修正するためにステアリング入力又はブレーキを提供する。
【0245】
BSWシステムは、自動車の死角において車両の運転者に検出及び警告する。BSWシステムは、合流又はレーンの変更が安全ではないことを指示するために視覚的、可聴式、及び/又は触覚的警告を提供することができる。システムは、運転者が方向指示器を使用するとき、付加的警報を提供し得る。BSWシステムは、運転者フィードバック、たとえば、ディスプレイ、スピーカ、及び/又は振動部品、に電気的に連結された、専用プロセッサ、DSP、FPGA、及び/又はASICに連結された、後ろ側を向いたカメラ及び/又はRADARセンサ1260を使用し得る。
【0246】
RCTWシステムは、車両1200がバックしているときにリアカメラの範囲外で物体が検出されると視覚的、可聴式、及び/又は触覚的通知を提供することができる。いくつかのRCTWシステムは、衝突を回避するために車両ブレーキが適用されることを確実にするために、AEBを含む。RCTWシステムは、運転者フィードバック、たとえば、ディスプレイ、スピーカ、及び/又は振動部品、に電気的に連結された、専用プロセッサ、DSP、FPGA、及び/又はASICに連結された、1つ又は複数の後ろを向いたRADARセンサ1260を使用することができる。
【0247】
従来のADASシステムは、運転者に警告し、安全状態が本当に存在するかどうかを運転者が判定し、それに応じて行動することを可能にするので、従来のADASシステムは、通常は壊滅的ではないが、運転者を悩ませている及び気を散らせていることがある誤判定結果を生み出す傾向にあることがあった。しかしながら、自律型車両1200では、結果が矛盾する場合には、車両1200自体が、1次的コンピュータ又は2次的コンピュータ(たとえば、第1のコントローラ1236又は第2のコントローラ1236)からの結果を聞き入れるかどうかを決定しなければならない。たとえば、一部の実施例では、ADASシステム1238は、知覚情報をバックアップ・コンピュータ合理性モジュールに提供するためのバックアップ及び/又は2次的コンピュータでもよい。バックアップ・コンピュータ合理性モニタは、ハードウェア構成要素で冗長な多様なソフトウェアを実行して、知覚及び動的運転タスクにおいて障害を検出することができる。ADASシステム1238からの出力は、監督MCUに提供され得る。1次的コンピュータ及び2次的コンピュータからの出力が矛盾する場合、監督MCUは、安全な動作を確実にするためにその矛盾をどのように調整するかを決定する必要がある。
【0248】
いくつかの実例では、1次的コンピュータは、選択された結果における1次的コンピュータの信頼性を指示する、信頼性スコアを監督MCUに提供するように構成され得る。信頼性スコアが閾値を超えた場合、監督MCUは、2次的コンピュータが矛盾する又は不整合の結果を与えるかどうかにかかわらず、1次的コンピュータの指示に従い得る。信頼性スコアが閾値を満たさない場合、及び1次的及び2次的コンピュータが異なる結果を示す(たとえば、矛盾する)場合、監督MCUは、コンピュータの間で調停して適切な結果を決定することができる。
【0249】
監督MCUは、2次的コンピュータが誤ったアラームを提供する状態を、1次的コンピュータ及び2次的コンピュータからの出力に基づいて、判定するようにトレーニング及び構成されたニューラル・ネットワークを実行するように構成され得る。したがって、監督MCU内のニューラル・ネットワークは、2次的コンピュータの出力が信頼され得るとき、及びそれが信頼され得ないときを学習することができる。たとえば、2次的コンピュータがRADARベースのFCWシステムであるとき、監督MCU内のニューラル・ネットワークは、アラームをトリガする下水溝の鉄格子又はマンホールの蓋など、実際には危険ではない金属製の物をいつFCWが識別しているかを学習することができる。同様に、2次的コンピュータがカメラベースのLDWシステムであるとき、監督MCU内のニューラル・ネットワークは、自転車に乗った人又は歩行者が存在し、車線逸脱が、実際には、最も安全な操作であるときに、LDWを無視することを学習することができる。監督MCU上で実行中のニューラル・ネットワークを含む実施例では、監督MCUは、関連メモリを有するニューラル・ネットワークを実行するのに適したDLA又はGPUのうちの少なくとも1つを含み得る。好ましい実施例において、監督MCUは、SoC1204の構成要素を含み得る、及び/又はSoC1204の構成要素として含まれ得る。
【0250】
他の実例において、ADASシステム1238は、コンピュータ・ビジョンの従来のルールを使用するADAS機能を実行する2次的コンピュータを含み得る。そのようなものとして、2次的コンピュータは、古典的コンピュータ・ビジョン・ルール(if-then)を使用することができ、監督MCU内のニューラル・ネットワークの存在は、信頼性、安全性及び性能を向上させることができる。たとえば、多様な実装形態及び意図的な非同一性は、特にソフトウェア(又はソフトウェア-ハードウェア・インターフェース)機能によって引き起こされる障害に対して、システム全体をよりフォールトトレラントにする。たとえば、1次的コンピュータで実行中のソフトウェア内にソフトウェア・バグ又はエラーが存在し、2次的コンピュータで実行中の同一でないソフトウェア・コードが同じ総合的結果を提供する場合、監督MCUは、総合的結果は正しく、1次的コンピュータによって使用されるソフトウェア又はハードウェア内のバグは重大なエラーを引き起こしていないというより大きな確信を有し得る。
【0251】
いくつかの実例では、ADASシステム1238の出力は、1次的コンピュータの知覚ブロック及び/又は1次的コンピュータの動的運転タスク・ブロックに供給され得る。たとえば、ADASシステム1238が、直ぐ前の物体が原因で、前方衝突警報を示した場合、知覚ブロックは、物体を識別するときに、この情報を使用することができる。他の実例において、2次的コンピュータは、本明細書に記載のように、トレーニングされ、それ故に誤判定のリスクを減らす、独自のニューラル・ネットワークを有し得る。
【0252】
車両1200は、インフォテインメントSoC1230(たとえば、車両内のインフォテインメント・システム(IVI:in-vehicle infotainment system))をさらに含み得る。SoCとして図示及び記述されているが、インフォテインメント・システムは、SoCでなくてもよく、2個以上の個別の構成要素を含み得る。インフォテインメントSoC1230は、オーディオ(たとえば、音楽、携帯情報端末、ナビゲーション命令、ニュース、無線など)、ビデオ(たとえば、TV、映画、ストリーミングなど)、電話(たとえば、ハンズフリー通話)、ネットワーク接続(たとえば、LTE、Wi-Fiなど)、及び/又は情報サービス(たとえば、ナビゲーション・システム、後方駐車支援、無線データシステム、燃料レベル、総移動距離、ブレーキ燃料レベル、オイル・レベル、ドアを開ける/閉じる、エア・フィルタ情報などの車両関連情報)を車両1200に提供するために使用され得るハードウェア及びソフトウェアの組合せを含み得る。たとえば、インフォテインメントSoC1230は、無線、ディスク・プレイヤ、ナビゲーション・システム、ビデオ・プレイヤ、USB及びブルートゥース(登録商標)接続、カーピュータ、車内エンターテインメント、Wi-Fi、ハンドル・オーディオ制御装置、ハンズ・フリー音声制御、ヘッドアップ・ディスプレイ(HUD:heads-up display)、HMIディスプレイ1234、テレマティックス・デバイス、制御パネル(たとえば、様々な構成要素、特徴、及び/又はシステムを制御する及び/又はこれと相互に作用するための)、及び/又は他の構成要素を含み得る。インフォテインメントSoC1230は、ADASシステム1238からの情報、計画された車両操作などの自律運転情報、軌道、周囲環境情報(たとえば、交差点情報、車両情報、道路情報など)、及び/又は他の情報など、車両のユーザへの情報(たとえば、視覚的及び/又は可聴式の)を提供するためにさらに使用され得る。
【0253】
インフォテインメントSoC1230は、GPU機能性を含み得る。インフォテインメントSoC1230は、バス1202(たとえば、CANバス、イーサネット(登録商標)など)を介して、車両1200の他のデバイス、システム、及び/又は構成要素と通信することができる。いくつかの実例では、インフォテインメント・システムのGPUが、1次的コントローラ1236(たとえば、車両1200の1次的及び/又はバックアップ・コンピュータ)が故障した場合に、いくつかのセルフドライブ機能を実行することができるように、インフォテインメントSoC1230は、監督MCUに連結され得る。そのような実例では、インフォテインメントSoC1230は、本明細書に記載のように、車両1200をショーファーの安全停止モードにすることができる。
【0254】
車両1200は、計器群1232(たとえば、デジタル・ダッシュ、電子計器群、デジタル計器パネルなど)をさらに含み得る。計器群1232は、コントローラ及び/又はスーパーコンピュータ(たとえば、個別のコントローラ又はスーパーコンピュータ)を含み得る。計器群1232は、スピードメーター、燃料レベル、油圧、タコメーター、オドメーター、方向指示器、ギアシフト位置インジケータ、シート・ベルト警告灯、パーキングブレーキ警告灯、エンジン故障灯、エアバッグ(SRS)システム情報、照明制御装置、安全システム制御装置、ナビゲーション情報など、1セットの器具類を含み得る。いくつかの実例では、情報は、インフォテインメントSoC1230及び計器群1232の間で表示及び/又は共有され得る。言い換えれば、計器群1232は、インフォテインメントSoC1230の一部として含まれてもよく、逆もまた同様である。
【0255】
前述のように、少なくともいくつかの実施例において、自動車プラットフォーム100(
図1を参照)は、自律型車両1200の構成要素でもよい。そのような実施例において、コントローラ1236は、自動車SoC104を含む。たとえば、自動車SoC104は、SoC1204のうちの1つとして実装され得る。
【0256】
図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を含み得る。
【0257】
サーバ1278は、最近開始された道路工事など、予想外の又は変更された道路状態を示す画像を表す画像データを、ネットワーク1290を介して、車両から、受信することができる。サーバ1278は、ニューラル・ネットワーク1292、更新されたニューラル・ネットワーク1292、及び/又は、交通及び道路状態に関する情報を含むマップ情報1294をネットワーク1290を介して車両に送信することができる。マップ情報1294の更新は、建設現場、くぼみ、迂回路、洪水、及び/又は他の障害物に関する情報など、HDマップ1222の更新を含み得る。いくつかの実例では、ニューラル・ネットワーク1292、更新されたニューラル・ネットワーク1292、及び/又はマップ情報1294は、環境において任意の数の車両から受信されたデータにおいて表された新しいトレーニング及び/又は経験から、及び/又は(たとえば、サーバ1278及び/又は他のサーバを使用する)データ・センタにおいて実行されたトレーニングに基づいて、生じた可能性がある。
【0258】
サーバ1278は、トレーニング・データに基づいてマシン学習モデル(たとえば、ニューラル・ネットワーク)をトレーニングするために使用され得る。トレーニング・データは、車両によって生成され得る、及び/又は(たとえば、ゲーム・エンジンを使用して)シミュレーションにおいて生成され得る。いくつかの実例では、トレーニング・データは、タグ付けされる(たとえば、ニューラル・ネットワークが、監督された学習の恩恵を受ける場合)及び/又は他の事前処理を受けるが、他の実例において、トレーニング・データは、タグ付け及び/又は事前処理されない(たとえば、ニューラル・ネットワークが、監督された学習を必要としない場合)。トレーニングは、たとえば以下のクラスを含むがこれらに限定されない、任意の1つ又は複数のクラスのマシン学習技法に従って、実行され得る:監視されたトレーニング、半監視されたトレーニング、監視されていないトレーニング、自己学習、強化学習、連合型学習、転移学習、特徴学習(主要構成要素及びクラスタ分析を含む)、マルチ線形部分空間学習、多様体学習、表現学習(予備辞書学習を含む)、ルールに基づくマシン学習、異常検出、及びそれらの変更形態若しくは組合せ。マシン学習モデルがトレーシングされた後は、マシン学習モデルは、車両によって使用され得(たとえば、ネットワーク1290を介して車両に送信される)、及び/又は、マシン学習モデルは、車両を遠隔監視するために、サーバ1278によって使用され得る。
【0259】
いくつかの実例では、サーバ1278は、車両からデータを受信し、リアルタイムのインテリジェント推論のために最新のリアルタイムのニューラル・ネットワークにデータを適用することができる。サーバ1278は、NVIDIAによって開発されたDGX及びDGXステーション・マシンなど、GPU1284によって電力供給される深層学習スーパーコンピュータ及び/又は専用のAIコンピュータを含み得る。しかしながら、一部の実例では、サーバ1278は、CPU電源式データ・センタのみを使用する深層学習インフラストラクチャを含み得る。
【0260】
サーバ1278の深層学習インフラストラクチャは、高速のリアルタイム推論の能力を有することでき、その能力を使用して車両1200内のプロセッサ、ソフトウェア、及び/又は関連ハードウェアの調子を評価及び検証することができる。たとえば、深層学習インフラストラクチャは、車両1200がそのシーケンスの画像内に位置したシーケンスの画像及び/又は物体など、車両1200からの定期的更新を受信することができる(たとえば、コンピュータ・ビジョン及び/又は他のマシン学習物体分類技法を介して)。深層学習インフラストラクチャは、物体を識別し、車両1200によって識別された物体とそれらを比較するために、独自のニューラル・ネットワークを実行することができ、結果が一致せず、インフラストラクチャが、車両1200内のAIは正常に機能していないという結論を下した場合、サーバ1278は、制御を推測し、乗客に通知し、安全な駐車操作を完了するように車両1200のフェイルセーフ・コンピュータに命じる車両1200への信号を送信することができる。
【0261】
推論のために、サーバ1278は、GPU1284及び1つ又は複数のプログラマブル推論加速装置(たとえば、NVIDIAのTensorRT)を含み得る。GPU電源式サーバ及び推論加速の組合せは、リアルタイムの反応性を可能にすることができる。パフォーマンスがさほど必要とされない場合など、他の実例では、CPU、FPGA、及び他のプロセッサによって電力供給されるサーバが、推論のために使用され得る。
【0262】
例示的計算デバイス
図16は、本開示のいくつかの実施例の実装に使用するのに適した計算デバイス1600の一実例のブロック図である。計算デバイス1600は、以下のデバイスを間接的に又は直接的につなぐ相互接続システム1602を含み得る:メモリ1604、1つ又は複数の中央処理装置(CPU)1606、1つ又は複数のグラフィック処理ユニット(GPU)1608、通信インターフェース1610、I/Oポート1612、入力/出力構成要素1614、電力供給装置1616、1つ又は複数の提示構成要素1618(たとえば、ディスプレイ)、及び1つ又は複数の論理ユニット1620。
【0263】
図16の様々なブロックは、線で相互接続システム1602を介して接続しているように示されているが、これは制限することを意図されておらず、単に分かりやすくするためである。たとえば、一部の実施例では、表示デバイスなどの提示構成要素1618は、I/O構成要素1614と考えられ得る(たとえば、ディスプレイがタッチ・スクリーンである場合)。別の実例として、CPU1606及び/又はGPU1608はメモリを含み得る(たとえば、メモリ1604は、GPU1608、CPU1606、及び/又は他の構成要素のメモリに加えた記憶デバイスを表し得る)。言い換えれば、
図16の計算デバイスは、単に例示である。「ワークステーション」、「サーバ」、「ラップトップ」、「デスクトップ」、「タブレット」、「クライアント・デバイス」、「モバイル・デバイス」、「ハンドヘルド・デバイス」、「ゲーム機」、「電子制御ユニット(ECU:electronic control unit)」、「仮想現実システム」、「拡張現実システム」、及び/又は他のデバイス若しくはシステム・タイプなどのカテゴリはすべて、
図16の計算デバイスの範囲内にあることが意図されているので、これらは区別されない。
【0264】
相互接続システム1602は、1つ又は複数のリンク又はバス、たとえば、アドレス・バス、データ・バス、制御バス、又はその組合せ、を表し得る。相互接続システム1602は、1つ又は複数のバス又はリンク・タイプ、たとえば、業界標準アーキテクチャ(ISA:industry standard architecture)バス、拡張業界標準アーキテクチャ(EISA:extended industry standard architecture)バス、VESA(video electronics standards association)バス、周辺構成要素相互接続(PCI:peripheral component interconnect)バス、周辺構成要素相互接続エクスプレス(PCIe:peripheral component interconnect express)バス、及び/又は別のタイプのバス若しくはリンク、を含み得る。一部の実施例では、構成要素の間に直接接続が存在する。一実例として、CPU1606は、メモリ1604に直接接続され得る。さらに、CPU1606は、GPU1608に直接接続され得る。構成要素の間に直接、又はポイント対ポイント接続が存在する場合、相互接続システム1602は、接続を実施するためのPCIeリンクを含み得る。これらの実例では、PCIバスは、計算デバイス1600に含まれる必要はない。
【0265】
メモリ1604は、様々なコンピュータ可読媒体のいずれかを含み得る。コンピュータ可読媒体は、計算デバイス1600によってアクセスすることができる任意の利用可能な媒体でもよい。コンピュータ可読媒体は、揮発性及び不揮発性媒体の両方、及び取り外し可能な及び取り外し不可能な媒体を含み得る。例として、しかし限定ではなく、コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を含み得る。
【0266】
コンピュータ記憶媒体は、コンピュータ可読命令、データ構造体、プログラム・モジュール、及び/又は他のデータ・タイプなどの情報の記憶のための任意の方法又は技術において実装された揮発性及び不揮発性媒体及び/又は取り外し可能な及び取り外し不可能な媒体の両方を含み得る。たとえば、メモリ1604は、オペレーティング・システムなど、(たとえば、プログラム及び/又はプログラム要素を表す)コンピュータ可読命令を記憶することができる。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ又は他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD:digital versatile disk)又は他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ又は他の磁気記憶デバイス、或いは、所望の情報を記憶するために使用し得る及び計算デバイス1600によってアクセスし得る任意の他の媒体を含み得るが、これらに限定されない。本明細書では、コンピュータ記憶媒体は、信号自体を含まない。
【0267】
コンピュータ記憶媒体は、搬送波などの変調データ信号又は他の移送機構においてコンピュータ可読命令、データ構造体、プログラム・モジュール、及び/又は他のデータ・タイプを実施することができ、任意の情報配信媒体を含む。「変調データ信号」という用語は、その特性セットのうちの1つ又は複数を有する或いは信号内の情報をエンコードするような方式で変化した信号を指し得る。例として、しかし限定せず、コンピュータ記憶媒体は、ワイヤード・ネットワーク又は直接ワイヤード接続などのワイヤード媒体と、音響、RF、赤外線及び他のワイヤレス媒体などのワイヤレス媒体とを含み得る。前述のいずれかの組合せもまた、コンピュータ可読媒体の範囲に含まれるべきである。
【0268】
CPU1606は、コンピュータ可読命令のうちの少なくともいくつかを実行して計算デバイス1600の1つ又は複数の構成要素を制御して本明細書に記載の方法及び/又はプロセスのうちの1つ又は複数を実行するように構成され得る。CPU1606は、多数のソフトウェア・スレッドを同時に処理する能力を有する1つ又は複数の(たとえば、1個、2個、4個、8個、28個、72個などの)コアをそれぞれ含み得る。CPU1606は、任意のタイプのプロセッサを含み得、実装された計算デバイス1600のタイプに応じて、異なるタイプのプロセッサを含み得る(たとえば、モバイル・デバイスのためのより少数のコアを有するプロセッサ、及びサーバのためのより多数のコアを有するプロセッサ)。たとえば、計算デバイス1600のタイプに応じて、プロセッサは、縮小命令セット計算(RISC:Reduced Instruction Set Computing)を使用して実装されたAdvanced RISC Machines(ARM)プロセッサ、又は複合命令セット計算(CISC:Complex Instruction Set Computing)を使用して実装されたx86プロセッサでもよい。計算デバイス1600は、計算コプロセッサなど、1つ又は複数のマイクロプロセッサ又は補助コプロセッサ内の1つ又は複数のCPU1606を含み得る。
【0269】
CPU1606に加えて又はその代わりに、GPU1608は、コンピュータ可読命令のうちの少なくともいくつかを実行して計算デバイス1600の1つ又は複数の構成要素を制御して本明細書に記載の方法及び/又はプロセスのうちの1つ又は複数を実行するように構成され得る。GPU1608のうちの1つ若しくは複数は、統合されたGPU(たとえば、CPU1606のうちの1つ又は複数とでもよく、及び/又はGPU1608のうちの1つ若しくは複数は、離散GPUでもよい。実施例では、GPU1608のうちの1つ又は複数は、CPU1606のうちの1つ又は複数のコプロセッサでもよい。GPU1608は、グラフィックス(たとえば、3Dグラフィックス)をレンダリングする又は汎用計算を実行するために、計算デバイス1600によって使用され得る。たとえば、GPU1608は、GPUによる汎用計算(GPGPU:General-Purpose computing on GPU)のために使用され得る。GPU1608は、同時に数百又は数千のソフトウェア・スレッドを処理する能力を有する数百又は数千のコアを含み得る。GPU1608は、レンダリング・コマンド(たとえば、ホスト・インターフェースを介して受信されたCPU1606からのレンダリング・コマンド)に応答して、出力画像のための画素データを生成することができる。GPU1608は、画素データ又は任意の他の適切なデータ、たとえばGPGPUデータ、を記憶するためのグラフィックス・メモリ、たとえば表示メモリ、を含み得る。表示メモリは、メモリ1604の一部として含まれ得る。GPU1608は、並行して動作する(たとえば、リンクを介して)2個以上のGPUを含み得る。リンクは、GPUに直接接続することができ(たとえば、NVLINKを使用して)、又はスイッチを介して(たとえば、NVSwitchを使用して)GPUを接続することができる。ともに結合されるとき、各GPU1608は、出力の異なる部分の又は異なる出力の画素データ又はGPGPUデータ(たとえば、第1の画像の第1のGPU及び第2の画像の第2のGPU)を生成することができる。各GPUは、独自のメモリを含むことができ、又は他のGPUとメモリを共有することができる。
【0270】
CPU1606及び/又はGPU1608に加えて又はその代わりに、論理ユニット1620は、コンピュータ可読命令のうちの少なくともいくつかを実行して計算デバイス1600のうちの1つ又は複数を制御して本明細書に記載の方法及び/又はプロセスのうちの1つ又は複数を実行するように構成され得る。実施例では、CPU1606、GPU1608、及び/又は論理ユニット1620は、方法、プロセス及び/又はその部分の任意の組合せを離散的に又は合同で実行することができる。論理ユニット1620のうちの1つ若しくは複数は、CPU1606及び/若しくはGPU1608のうちの1つ若しくは複数の一部でもよく及び/又はそこで統合されてもよく、及び/又は、論理ユニット1620のうちの1つ若しくは複数は、CPU1606及び/若しくはGPU1608に対する離散構成要素であっても若しくは他の方法でそれらの外部にあってもよい。実施例では、論理ユニット1620のうちの1つ又は複数は、CPU1606のうちの1つ若しくは複数及び/又はGPU1608のうちの1つ若しくは複数のコプロセッサでもよい。
【0271】
論理ユニット1620の実例は、1つ又は複数の処理コア及び/又はその構成要素、たとえば、テンソル・コア(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)、特定用途向け集積回路(ASIC)、浮動小数点演算ユニット(FPU)、I/Oエレメント、周辺構成要素相互接続(PCI)又は周辺構成要素相互接続エクスプレス(PCIe)エレメント、及び/又は同類のもの、を含む。
【0272】
通信インターフェース1610は、ワイヤード及び/又はワイヤレス通信を含む、電子通信ネットワークを介して計算デバイス1600が他の計算デバイスと通信することを可能にする、1つ又は複数のレシーバ、トランスミッタ、及び/又はトランシーバを含み得る。通信インターフェース1610は、ワイヤレス・ネットワーク(たとえば、Wi-Fi、Z-Wave、ブルートゥース(登録商標)、ブルートゥース(登録商標)LE、ZigBeeなど)、ワイヤード・ネットワーク(たとえば、イーサネット(登録商標)又はInfiniBandを介して通信すること)、低電力ワイド・エリア・ネットワーク(たとえば、LoRaWAN、SigFoxなど)、及び/又はインターネットなどの、いくつかの異なるネットワークのうちのいずれかを介する通信を可能にするための構成要素及び機能を含み得る。
【0273】
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によって使用され得る。
【0274】
電力供給装置1616は、ハードワイヤード電力供給装置、バッテリ電力供給装置、又はその組合せを含み得る。電力供給装置1616は、計算デバイス1600の構成要素が動作することを可能にするために計算デバイス1600に電力を提供することができる。
【0275】
提示構成要素1618は、ディスプレイ(たとえば、モニタ、タッチ画面、テレビジョン画面、ヘッドアップ表示装置(HUD)、他のディスプレイタイプ、又はその組合せ)、スピーカ、及び/又は他の提示構成要素を含み得る。提示構成要素1618は、他の構成要素(たとえば、GPU1608、CPU1606など)からデータを受信し、データを(たとえば、画像、ビデオ、音響などとして)出力することができる。
【0276】
本開示は、コンピュータ又は、携帯情報端末若しくは他のハンドヘルド・デバイスなどの、他のマシンによって実行されている、プログラム・モジュールなどのコンピュータ実行可能命令を含む、コンピュータ・コード又はマシン使用可能命令との一般的関連において説明されることがある。一般に、ルーティン、プログラム、オブジェクト、構成要素、データ構造体などを含むプログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ・タイプを実装するコードを指す。本開示は、ハンドヘルド・デバイス、家電製品、汎用コンピュータ、より特殊な計算デバイスなどを含む、様々な構成で実施され得る。本開示はまた、通信ネットワークを介してリンクされた遠隔処理デバイスによってタスクが実行される分散型コンピューティング環境において実施され得る。
【0277】
本開示の少なくとも1つの実施例が、以下の条項を考慮して、説明され得る:
【0278】
1.以下を備える、集積回路:第1のクロックと、第1のクロックから隔離された第2のクロックと、第1の電力接続と、第1の電力接続から隔離された第2の電力接続と、第1の電力接続を使用して電力を及び第1のクロックを使用して第1のクロック信号を受信するための第1の部分と、第2の電力接続を使用して電力を及び第2のクロックを使用して第2のクロック信号を受信するための第2の部分、第2の部分は、第1の部分と通信するためのインターフェース、インターフェース制御、並びにインターフェース制御をロック及びアンロックするためのプロセッサを備え、インターフェース制御は、インターフェース制御がロックされるときにインターフェースを介する通信を防ぎ、インターフェース制御は、インターフェース制御がアンロックされるときにインターフェースを介する通信を可能にする。
【0279】
2.条項1の集積回路、そこで、第1の部分が、第1の部分において生じる1つ又は複数の障害に対応する証拠を、第2の部分に、通信するための第1の障害アグリゲータを備え、第2の部分が、1つ又は複数の障害に対応する証拠を受信及び記憶するための第2の障害アグリゲータを備え、集積回路が、第1の及び第2の障害アグリゲータを接続する障害インターフェースを備え、障害インターフェースが、インターフェースとは別個であり、プロセッサが、第2の障害アグリゲータがどの障害に対応する証拠も記憶していないときにのみ、インターフェース制御をアンロックする。
【0280】
3.条項1又は2の集積回路、そこで、第2の部分が、プロセッサがインターフェースを介する第1の部分との通信を開始するときに開始するタイマを備え、タイマは、タイマが所定の時間量より多くが経過したことを示しており、第1の部分が通信に応答していないとき、障害の証拠を生成する。
【0281】
4.条項3の集積回路、そこで、タイマは、タイマが所定の時間量より多くが経過したことを示す前に第1の部分が通信に応答するときに、リセットし、プロセッサは、プロセッサが第1の部分との通信を完了した後、インターフェースをロックする。
【0282】
5.以下をさらに備える、条項1~4のうちのいずれか1つの集積回路:第1の及び第2の部分によって共用される不揮発性メモリ、ローカル・メモリを備える第2の部分、集積回路がブートするときに命令を不揮発性メモリからローカル・メモリにコピーするプロセッサ、インターフェースがロックされるときにプロセッサによって実行されることになる命令。
【0283】
6.条項1~5のうちのいずれか1つの集積回路、そこで、第1の部分は、揮発性メモリを備え、第2の部分は、インターフェースを介して揮発性メモリと通信する。
【0284】
7.連続した1つの半導体材料上に存在する条項1~6のうちのいずれか1つの集積回路。
【0285】
8.自動車システム・オン・チップ(「SoC」)の一部分を実装する条項1~7のうちのいずれか1つの集積回路。
【0286】
9.条項1~8のうちのいずれか1つの集積回路、そこで、第1の部分は、第1のリスク分類レベルにおいて動作し、第2の部分は、第2のリスク分類レベルにおいて動作し、第2の分類リスク・レベルは、第1のリスク分類レベルより高い。
【0287】
10.以下を含む、方法:第1の部分における障害アグリゲータが少なくとも所定の数の障害を示すデータを含むかどうかを、集積回路の第1の部分によって、決定することと、第1の部分が、障害アグリゲータは少なくとも所定の数の障害を示すデータを含まないと決定するとき、集積回路の第2の部分とのインターフェースを、第1の部分によって、アンロックすることと、アンロックされたインターフェースを介して第2の部分のアクセスを、第1の部分によって、開始することと、アクセスを開始した後にインターフェースを、第1の部分によって、ロックすること。
【0288】
11.条項10の方法、そこで、アクセスを開始することは、アクセス・タイマを開始し、第1の部分は、アクセス・タイマが開始されたときから所定の時間量より多くが経過したことをアクセス・タイマが示しており、応答が第2の部分から受信されていないことを検出した後、インターフェースをロックする。
【0289】
12.条項11の方法、そこで、第1の部分は、アクセス・タイマが開始されたときから所定の時間量より多くが経過したことをアクセス・タイマが示しており、応答が第2の部分から受信されていないことを検出した後、新しい障害を生成する。
【0290】
13.条項10~12のうちのいずれか1つの方法、そこで、アクセスを開始することは、アクセス・タイマを開始し、方法は、以下をさらに含む:アクセス・タイマが開始されたときから所定の時間量より多くが経過したことをアクセス・タイマが示す前に第2の部分からの応答を、第1の部分によって、受信すること、アクセス・タイマを停止する応答を受信すること、アクセスを完了した後に第1の部分がインターフェースをロックすること。
【0291】
14.以下をさらに含む、条項10~13のうちのいずれか1つの方法:第1の部分が、障害アグリゲータは少なくとも所定の数の障害を示すデータを含むと決定するとき、1つ又は複数の修正行動を、第1の部分によって、実行すること。
【0292】
15.条項14の方法、そこで、集積回路は、自動車システム・オン・チップ(「SoC」)の一部分を実装し、1つ又は複数の修正行動は、自律型車両を安全な状態に置くことになっている。
【0293】
16.条項10~15のうちのいずれか1つの方法、そこで、集積回路は、自動車システム・オン・チップ(「SoC」)の一部分を実装し、第1の部分は、自律型車両が運転している間に、自律型車両のための安全機能を実行し、第2の部分は、自律型車両が運転している間に、自律運転機能を実行する。
【0294】
17.条項10~16のうちのいずれか1つの方法、そこで、インターフェースは、第1の部分を第2の部分の揮発性メモリ又は制御バックボーンと接続する。
【0295】
18.条項10~17のうちのいずれか1つの方法、そこで、第1の部分は、第1のクロック・ドメインにおいて動作し、第2の部分は、第1のクロック・ドメインとは異なる第2のクロック・ドメインにおいて動作し、インターフェースは、第2の部分から受信された信号を第1のクロック・ドメインに変換するフェーズ同期回路を備える。
【0296】
19.以下を備える、集積回路:第1のドメイン内で第1のリスク・レベルにおいて動作する第1の部分と、第2のドメイン内で第2のリスク・レベルにおいて動作する第2の部分、第2のリスク・レベルは、第1のリスク・レベルより大きく、第2の部分は、プロセッサと第1の及び第2の部分を接続するインターフェースとを備え、プロセッサは、インターフェースを介する通信を防ぐためにインターフェースを選択的にロックし、プロセッサは、インターフェースを介する通信を可能にするためにインターフェースを選択的にアンロックする。
【0297】
20.以下をさらに備える、条項19の集積回路:第1のドメインに電力を供給する第1の電力接続と、第1の電力接続から電気的に隔離され、第2のドメインに電力を供給する第2の電力接続、インターフェースは、インターフェースを介する任意の通信の電圧を調整するための少なくとも1つの電圧シフタを備える。
【0298】
21.以下をさらに備える、条項19又は20の集積回路:第1のクロック信号を第1のドメインに供給する第1のクロックと、第1のクロックから隔離され、第2のクロック信号を第2のドメインに供給する第2のクロック、インターフェースは、インターフェースを介する任意の通信のフェーズを調整するためのフェーズ同期回路を備える。
【0299】
22.条項19~21のうちのいずれか1つの集積回路、そこで、インターフェースは、1つ又は複数のセキュリティ・ルールを実装するファイアウォールを備え、ファイアウォールは、1つ又は複数のセキュリティ・ルールに基づいてインターフェースを介して通信を許可する又はブロックする。
【0300】
23.条項19~22のうちのいずれか1つの集積回路、そこで、第1の部分は、第1の部分において生じる障害を示すデータを第2の部分に通信するために、第1の障害アグリゲータを備え、第2の部分は、障害を示すデータを受信し、障害を示すデータを、障害がプロセッサによって取り除かれるまで記憶するために、第2の障害アグリゲータを備え、集積回路は、第1の及び第2の障害アグリゲータを接続する障害インターフェースを備え、障害インターフェースは、インターフェースとは別個であり、プロセッサは、第2の障害アグリゲータによって記憶された任意の障害を示すデータに対応する障害がプロセッサによって取り除かれた後にのみ、インターフェースをアンロックする。
【0301】
24.条項19~23のうちのいずれか1つの集積回路、そこで、第2の部分は、プロセッサがインターフェースをアンロックするときに開始するタイマを備え、タイマは、タイマが所定の時間量より多くが経過したことを示しており、第1の部分がインターフェースを介して第1の部分に送られる通信に応答していないときに、新しい障害を生成する。
【0302】
25.条項24の集積回路、そこで、タイマは、タイマが所定の時間量より多くが経過したことを示す前に第1の部分が通信に応答するときに、リセットし、プロセッサは、プロセッサが第1の部分との通信を完了した後、インターフェースをロックする。
【0303】
26.条項19~25の任意の1つの集積回路、そこで、第1の部分は、第1の及び第2の部分によって共用される不揮発性メモリを備え、第2の部分は、ローカル・メモリを備え、プロセッサは、集積回路がブートするときに不揮発性メモリからローカル・メモリに命令をコピーし、命令は、インターフェースがロックされるときにプロセッサによって実行される。
【0304】
27.条項19~26の任意の1つの集積回路、そこで、第1の部分は、揮発性メモリを備え、第2の部分は、インターフェースを介して揮発性メモリと通信する。
【0305】
28.条項19~27のうちのいずれか1つの集積回路、そこで、第1の部分は、制御バックボーンを備え、インターフェースは、制御バックボーンに接続され、第2の部分は、インターフェース及び制御バックボーンを介して第1の部分の少なくとも1つの部分と通信する。
【0306】
29.連続した1つの半導体材料上に存在する条項19~28のうちのいずれか1つの集積回路。
【0307】
30.自動車システム・オン・チップ(「SoC」)の一部分を実装する条項19~29のうちのいずれか1つの集積回路。
【0308】
31.条項19~30のうちのいずれか1つの集積回路、そこで、第2の部分は、インターフェースを備える複数のインターフェースを備え、複数のインターフェースのそれぞれが、第2の部分を第1の部分の対応する部分と接続し、プロセッサは、第1の部分の対応する部分との特定のインターフェースを介する通信を可能にするために、複数のインターフェースのうちの特定の1つを選択的にアンロックする。
【0309】
32.条項31の集積回路、そこで、プロセッサは、第1の部分の複数のインターフェースを介する通信を防ぐためにアンロックされる複数のインターフェースのうちのいずれかを選択的にロックする。
【0310】
開示される実施例の説明に関連する(特に、以下の特許請求の範囲に関連する)「一(a、an)」及び「その」という用語並びに類似の指示物の使用は、用語の定義としてではなく、本明細書で別段の指示のない限り又は文脈から明確に否定されない限り、単数形と複数形との両方を含めると解釈されるべきである。「備える」、「有する」、「含む」、及び「包含する」という用語は、別段の指示のない限り、制限なしの用語(「含むが、これに制限されない」を意味する)として解釈されるべきである。「接続される」という用語は、未修飾である及び物理接続を参照するとき、介在する何かがあったとしても、部分的に又は全体的にその中に含まれる、それに取り付けられる、又はともに結合されるものとして解釈されるべきである。値の範囲の記述は、別段の指示のない限り、単に、範囲内にあるそれぞれの個々の値を個別に参照する簡略表記法の役割を果たすことを意図されており、それぞれの個々の値は、それが本明細書で個別に列挙されたかのように、明細書に組み込まれる。少なくとも1つの実施例において、「セット」(たとえば、「1セットのアイテム」)又は「サブセット」という用語の使用は、別段の指示のない限り又は文脈から否定されない限り、1つ又は複数のメンバを含む非空のコレクションとして解釈されるべきである。さらに、別段の指示のない限り又は文脈から否定されない限り、対応するセットの「サブセット」という用語は、対応するセットの適切なサブセットを必ずしも示さないが、サブセット及び対応するセットは、等しくてもよい。
【0311】
本明細書では、2個以上の要素に関する「及び/又は」の記述は、1つの要素のみ、又は要素の組合せを意味すると解釈されるべきである。たとえば、「要素A、要素B、及び/又は要素C」は、要素Aのみ、要素Bのみ、要素Cのみ、要素A及び要素B、要素A及び要素C、要素B及び要素C、或いは、要素A、B、及びCを含み得る。
【0312】
接続的言語、たとえば、「A、B、及びCのうちの少なくとも1つ」、又は「A、B及びCのうちの少なくとも1つ」という形の表現など、は、別段の指定のない限り又は文脈から明確に否定されない限り、アイテム、用語などが、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つであるが、明示的に又は文脈によってそのように示されるとき、それ以上であり得る。さらに、別段の指定のない限り又は他の方法で文脈から除外されない限り、「に基づく」という表現は、「に少なくとも部分的に基づく」ことを意味し、「それのみに基づく」ことは意味しない。
【0313】
本明細書に記載のプロセスの動作は、別段の指定のない限り又は文脈から明確に否定されない限り、任意の適切な順番で実行され得る。少なくとも1つの実施例において、本明細書に記載のプロセスなどのプロセス(或いは変更形態及び/又はその組合せ)は、実行可能命令で構成される1つ又は複数のコンピュータ・システムの制御下で実行され、1つ又は複数のプロセッサ上で、ハードウェア又はその組合せによって集合的に実行するコード(たとえば、実行可能命令、1つ又は複数のコンピュータ・プログラム或いは1つ又は複数のアプリケーション)として実装される。少なくとも1つの実施例において、コードは、コンピュータ可読記憶媒体に記憶される。少なくとも1つの実施例では、1つ又は複数のプロセッサによって実行可能な複数の命令を含むコンピュータ・プログラムの形で。少なくとも1つの実施例において、コンピュータ可読記憶媒体は、一時的信号(たとえば、一時的電気又は電磁送信を伝播する)を除くが一時的信号のトランシーバ内の非一時的データ・ストレージ回路(たとえば、バッファ、キャッシュ、及び待ち行列)を含む非一時的コンピュータ可読記憶媒体である。少なくとも1つの実施例において、コード(たとえば、実行可能コード又はソース・コード)は、コンピュータ・システムの1つ又は複数のプロセッサによって実行されるとき(すなわち、実行される結果として)、本明細書に記載の動作をコンピュータ・システムに実行させる、実行可能命令が記憶された1セットの1つ又は複数の非一時的コンピュータ可読記憶媒体(又は実行可能命令を記憶するための他のメモリ)に記憶される。少なくとも1つの実施例における、1セットの非一時的コンピュータ可読記憶媒体は、多数の非一時的コンピュータ可読記憶媒体を備え、多数の非一時的コンピュータ可読記憶媒体の個々の非一時的記憶媒体のうちの1つ又は複数は、コードのすべてを欠いており、一方、多数の非一時的コンピュータ可読記憶媒体は、コードのすべてを集合的に記憶する。少なくとも1つの実施例において、実行可能命令は、異なる命令が異なるプロセッサによって実行されるように、実行される―少なくとも1つの実施例において、非一時的コンピュータ可読記憶媒体は、命令を記憶し、メイン中央処理装置(「CPU」)は、命令のうちのいくつかを実行し、一方、グラフィックス処理ユニット(「GPU」)は、他の命令を実行する。少なくとも1つの実施例において、コンピュータ・システムの異なる構成要素が、別個のプロセッサを有し、異なるプロセッサが、命令の異なるサブセットを実行する。
【0314】
したがって、少なくとも1つの実施例において、コンピュータ・システムは、本明細書に記載のプロセスの動作を単独に又は集合的に実行する1つ又は複数のサービスを実装するように構成され、そのようなコンピュータ・システムは、動作のパフォーマンスを可能にする適用可能なハードウェア及び/又はソフトウェアで構成される。さらに、本開示の少なくとも1つの実施例を実装するコンピュータ・システムは、単一のデバイスであり、別の実施例において、分散型コンピュータ・システムが本明細書に記載の動作を実行するように及び単一のデバイスがすべての動作を実行しないように異なって動作する多数のデバイスを備える分散型コンピュータ・システムである。
【0315】
本明細書で提供される任意の及びすべての実例、又は例示的な言語(たとえば、「などの」)の使用は、別段の指示のない限り、単に、開示の実施例をよりよく明らかにすることを意図されており、開示の範囲に制限を課さない。明細書内のどの言語も、開示の実践に必須なものとして何らかの非請求要素を示すものとして解釈されるべきではない。
【0316】
本明細書で引用される、刊行物、特許出願、及び特許を含む、すべての参考文献は、それぞれの参考文献が、参照により組み込まれると個別に及び具体的に示され、本明細書にその全部を明記されたかのように同程度に、参照により本明細書に組み込まれる。
【0317】
説明及び請求項において、「連結される」及び「接続される」という用語が、それらの派生語とともに、使用され得る。これらの用語は互いに同義語として意図されていないことがある、ということを理解されたい。そうではなくて、特定の実例において、「接続される」又は「連結される」は、複数の要素が互いに直接的又は間接的に物理的又は電気的に接触することを示すために使用され得る。「連結される」はまた、複数の要素が互いに直接に接触しないが、依然として互いに協力する又は相互作用することを意味し得る。
【0318】
別段の指定のない限り、明細書を通して、「処理すること」、「計算すること」、「算出すること」、「決定すること」などの用語は、計算システムのレジスタ及び/又はメモリ内の物理、たとえば、電子、量として表されるデータを操作する、及び/又は計算システムのメモリ、レジスタ又は他のそのような情報ストレージ、送信又は表示デバイス内の物理量として同様に表される他のデータに変換する、コンピュータ又は計算システム、或いは類似の電子計算デバイスの行動及び/又はプロセスを指す。
【0319】
類似の方式で、「プロセッサ」という用語は、レジスタ及び/又はメモリからの電子データを処理する並びにレジスタ及び/又はメモリに記憶され得る他の電子データにその電子データを変換する任意のデバイス又はデバイスの部分を指し得る。非限定的な実例として、「プロセッサ」は、CPU又はGPUでもよい。「計算プラットフォーム」は、1つ又は複数のプロセッサを備え得る。本明細書では、少なくとも1つの実施例において、「ソフトウェア」プロセスは、時間とともに作業、たとえば、タスク、スレッド、及び知的エージェント、を実行するソフトウェア及び/又はハードウェア・エンティティを含み得る。また、各プロセスは、順次に又は並行して、連続して又は断続的に命令を実施するための、複数のプロセスを指す。システムが1つ又は複数の方法を実施し得る及び方法がシステムと考えられ得る限りにおいて、「システム」及び「方法」という用語は、本明細書で同義で使用される。
【0320】
少なくとも1つの実施例において、論理演算ユニットは、1つ又は複数の入力を受け取って結果を生み出す1セットの組合せ論理回路である。少なくとも1つの実施例において、論理演算ユニットは、足し算、引き算、又は掛け算などの数学演算を実装するために、プロセッサによって使用される。少なくとも1つの実施例において、論理演算ユニットは、論理的AND/OR又はXORなどの論理演算を実装するために使用される。少なくとも1つの実施例において、論理演算ユニットは、ステートレスであり、論理ゲートを形成するように配置される半導体トランジスタなどの物理切り替え構成要素で作られている。少なくとも1つの実施例において、論理演算ユニットは、関連クロックを有するステートフル論理回路として内部で動作し得る。少なくとも1つの実施例において、論理演算ユニットは、関連レジスタ・セットにおいて保持されない内部状態を有する非同期論理回路として構築され得る。少なくとも1つの実施例において、論理演算ユニットは、プロセッサの1つ又は複数のレジスタに記憶されるオペランドを結合する並びに別のレジスタ又はメモリ位置にプロセッサによって記憶され得る出力を生み出すために、プロセッサによって使用される。
【0321】
少なくとも1つの実施例において、プロセッサによって取得される命令を処理する結果として、プロセッサは、論理演算ユニットに論理演算ユニットの入力に提供される命令コードに少なくとも部分的に基づいて結果を生み出させて、1つ又は複数の入力又はオペランドを論理演算ユニットに示す。少なくとも1つの実施例において、プロセッサによってALUに提供される命令コードは、プロセッサによって実行される命令に少なくとも部分的に基づく。少なくとも1つの実施例において、ALU内の組合せ論理は、入力を処理し、プロセッサ内のバスに配置される出力を生み出す。少なくとも1つの実施例において、プロセッサの時間を計ることが、ALUによって生み出される結果を所望の位置に送らせるように、プロセッサは、目的地レジスタ、メモリ位置、出力デバイス、又は出力バスにおける出力記憶位置を選択する。
【0322】
本文書において、サブシステム、コンピュータ・システム、又はコンピュータ実装されるマシンにアナログ又はデジタル・データを取得、獲得、受信、又は入力することが参照され得る。少なくとも1つの実施例において、アナログ及びデジタル・データを取得、獲得、受信、又は入力するプロセスは、関数コール又はアプリケーション・プログラミング・インターフェースへのコールのパラメータとしてデータを受信することなどによって様々な形で完遂され得る。いくつかの実装形態において、アナログ又はデジタル・データを取得、獲得、受信、又は入力するプロセスは、直列又は並列インターフェースを介してデータを転送することによって、完遂され得る。別の実装形態において、アナログ又はデジタル・データを取得、獲得、受信、又は入力するプロセスは、提供するエンティティから獲得するエンティティにコンピュータ・ネットワークを介してデータを転送することによって、完遂され得る。アナログ又はデジタル・データを提供する、出力する、送信する、送る、又は示すこともまた、参照され得る。様々な実例において、アナログ又はデジタル・データを提供する、出力する、送信する、送る、又は示すプロセスは、関数コールの入力又は出力パラメータ、アプリケーション・プログラミング・インターフェース又はプロセス間通信機構のパラメータとしてデータを転送することによって、完遂され得る。
【0323】
前述は、説明される技法の例示的実装形態を明記しているが、他のアーキテクチャが、説明される機能性を実装するために使用され得、本開示の範囲内にあることを意図されている。さらに、責任の特定の分散が、論考を目的として前述で定義されているが、様々な機能及び責任は、状況に応じて、異なる形で分散及び分割され得る。
【0324】
さらに、主題は、構造的特徴及び/又は方法論的行動に特有の言語において記述されてあるが、添付の特許請求の範囲において請求される主題は、記述された特定の特徴又は行動に必ずしも制限されない、ということを理解されたい。そうではなくて、特定の特徴及び行動は、特許請求の範囲を実装する例示的形として開示されている。
【0325】
本開示の主題は、法定の要件を満たすために特異性を有して記述されている。しかしながら、その記述自体が本開示の範囲を制限することは意図されていない。そうではなくて、本発明者は、請求されている主題が、他の現在の又は未来の技術と併せて、異なるステップ又は本文書に記載されたものと類似のステップの組合せを含むように、他の形で実施され得ることを意図している。さらに、「ステップ」及び/又は「ブロック」という用語は、使用される方法の異なる要素を含意するように本明細書で使用され得るが、これらの用語は、個別のステップの順番が明示的に記載されていない限り及びそのように記載されているときを除いて本明細書で開示される様々なステップの間に何らかの特定の順番を暗示するものとして解釈されるべきではない。
【0326】
他の変更形態が、本開示の主旨内にある。したがって、開示される技法は、様々な修正形態及び代替構造の影響を受けやすいが、そのある特定の示される実施例が、図に示され、詳細に前述された。しかしながら、開示された1つ又は複数の特定の形に本開示を制限するという意図は存在せず、そうではなくて、その意図は、添付の特許請求の範囲において定義されるように、本開示の主旨及び範囲内にあるすべての修正形態、代替構造物、及び均等物を包含することである、ということを理解されたい。
【国際調査報告】