(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023024931
(43)【公開日】2023-02-21
(54)【発明の名称】システム・オン・チップの分離された安全領域への障害の伝達
(51)【国際特許分類】
B60W 50/02 20120101AFI20230214BHJP
【FI】
B60W50/02
【審査請求】未請求
【請求項の数】39
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022089325
(22)【出願日】2022-06-01
(31)【優先権主張番号】202111034493
(32)【優先日】2021-07-30
(33)【優先権主張国・地域又は機関】IN
(71)【出願人】
【識別番号】501450960
【氏名又は名称】エヌビディア コーポレーション
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】パダム パット クリシュナニ
(72)【発明者】
【氏名】アビナッシュ ジェイ ブイ
(72)【発明者】
【氏名】シュラッダー マノハール ゴンドカール
(72)【発明者】
【氏名】ソウミャ サティヤ ベンカタ ナガ シヴァ サイ ビンドゥー マンダパチ
(57)【要約】
【課題】システム・オン・チップの領域を分離するシステム及び方法を提供すること。
【解決手段】様々な実例では、集積回路には第1の部分及び第2の部分が含まれている。第1の部分には、第1の部分が少なくとも1つのエラー信号を第2の部分に送信したときに開始するタイマが含まれている。タイマは、少なくとも1つの障害に対応するデータが第1の部分からクリアされたときにリセットされ得る。第1の部分は、タイマが少なくとも所定の時間が経過したことを示すときに、タイムアウト・エラー信号を送信する。第2の部分は、少なくとも1つのエラー信号と、タイムアウト・エラー信号が送られた場合にタイムアウト・エラー信号とを受信する。第2の部分は、タイムアウト・エラー信号を受信した後に外部システムに通知することができる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
第1のタイマを含む第1の部分であって、複数の論理ブロックに起因する少なくとも1つの障害に対応するデータを少なくとも1つのエラー信号に集約し、且つ前記少なくとも1つのエラー信号を送信し、前記第1のタイマは、前記少なくとも1つのエラー信号が送信されたときに開始し、且つ前記少なくとも1つの障害に対応する前記データが前記第1の部分からクリアされたときにリセットされ、前記第1の部分は、前記第1のタイマが少なくとも第1の所定の時間が経過したことを示し、前記少なくとも1つの障害に対応する前記データが前記第1の部分からクリアされていないときに、タイムアウト・エラー信号を送信する、第1の部分と、
前記少なくとも1つのエラー信号、及び前記タイムアウト・エラー信号が送られた場合は前記タイムアウト・エラー信号を受信する第2の部分であって、前記タイムアウト・エラー信号を受信した後に外部システムに通知する、第2の部分と、
を備える集積回路。
【請求項2】
前記少なくとも1つの障害のうちの特定の障害に対して、
前記第1の部分は、前記特定の障害を発生させたエラーを識別し、
前記複数の論理ブロックのうちの少なくとも1つが前記エラーを訂正したことを前記第1の部分が判定するときに、前記第1の部分は、前記特定の障害に対応する前記データを前記第1の部分からクリアし、
前記第1の部分は、前記特定の障害に対応する前記データが前記第1の部分からクリアされたことを前記第2の部分に通知し、
前記第2の部分は、前記特定の障害に対応する前記データを前記第2の部分からクリアする、請求項1に記載の集積回路。
【請求項3】
前記少なくとも1つの障害のうちの特定の障害に対して、
前記第1の部分は、前記特定の障害を発生させたエラーを識別し、
前記第1の部分は、前記エラーを訂正する1つ又は複数の措置を実行し、前記特定の障害に対応する前記データを前記第1の部分からクリアし、
前記第1の部分は、前記特定の障害に対応する前記データが前記第1の部分からクリアされたことを前記第2の部分に通知し、
前記第2の部分は、前記特定の障害に対応する前記データを前記第2の部分からクリアする、請求項1に記載の集積回路。
【請求項4】
前記少なくとも1つの障害のうちの特定の障害に対して、
前記第1の部分は、前記特定の障害を発生させたエラーを識別し、
前記第1の部分は、記憶場所に障害情報を書き込み、前記エラーのシビアリティを前記第2の部分に通知し、
前記第2の部分は、前記エラーの前記シビアリティに少なくとも部分的に基づいて前記障害情報を読み取るかどうかを判断し、
前記第2の部分は、前記エラーを訂正する1つ又は複数の措置を実行し、前記特定の障害に対応する前記データを前記第1の部分からクリアするように前記第1の部分に通知し、
前記第1の部分は、前記第1の部分が前記通知を受信した後に、前記特定の障害に対応する前記データを前記第1の部分からクリアし、
前記第1の部分は、前記特定の障害に対応する前記データが前記第1の部分からクリアされたことを前記第2の部分に通知し、
前記第2の部分は、前記特定の障害に対応する前記データを前記第2の部分からクリアする、請求項1に記載の集積回路。
【請求項5】
前記少なくとも1つの障害のうちの特定の障害に対して、
前記第1の部分は、前記特定の障害を発生させたエラーを識別し、
前記第1の部分は、前記エラーのシビアリティを前記第2の部分に通知し、
前記第2の部分は、前記エラーの前記シビアリティに基づいて前記エラーを前記外部システムに通知する、請求項1に記載の集積回路。
【請求項6】
前記第2の部分は、前記第2の部分が前記タイムアウト・エラー信号を受信したときに開始する第2のタイマを含み、
前記第2のタイマは、前記少なくとも1つの障害に対応する前記データが前記第2の部分からクリアされた後にリセットされ、
前記第2の部分は、前記外部システムに通知する前に、前記第2のタイマが少なくとも第2の所定の時間が経過したことを示すまで待機する、請求項1に記載の集積回路。
【請求項7】
前記第2の部分は、前記タイムアウト・エラー信号を受信した後に1つ又は複数の訂正措置を実行し、前記少なくとも1つの障害に対応する前記データをクリアするように前記第1の部分に通知し、前記第2の部分は、前記第2のタイマが少なくとも前記第2の所定の時間が経過したことを示す前に、前記第2の部分が前記少なくとも1つの障害に対応する前記データをクリアするように前記第1の部分に通知したときに、前記外部システムに通知しない、請求項6に記載の集積回路。
【請求項8】
前記第1の部分は、前記少なくとも1つの障害に対応する前記データを前記第2の部分からクリアする前記通知を受信した後に、前記少なくとも1つの障害に対応する前記データを前記第1の部分からクリアし、
前記第1の部分は、前記少なくとも1つの障害に対応する前記データが前記第1の部分からクリアされたことを前記第2の部分に通知し、
前記第2の部分は、前記少なくとも1つの障害に対応する前記データを前記第2の部分からクリアする、請求項7に記載の集積回路。
【請求項9】
単一の半導体材料上に存在している、請求項1に記載の集積回路。
【請求項10】
車載システムのシステム・オン・チップ(「SoC」)の一部分を実装している、請求項1に記載の集積回路。
【請求項11】
前記第2の部分は、前記第1の部分よりも高いリスク分類レベルで動作する、請求項1に記載の集積回路。
【請求項12】
前記少なくとも1つのエラー信号は、訂正されていないエラー信号を含み、前記少なくとも1つの障害に対応する前記データは、前記訂正されていないエラー信号に前記第1の部分によって集約された、訂正されていない障害に対応するデータを含み、前記集積回路は、
前記第1の部分から前記第2の部分へ前記タイムアウト・エラー信号を導く第1の信号導体と、
前記第1の部分から前記第2の部分へ前記訂正されていないエラー信号を導く第2の信号導体と、
をさらに備える、請求項1に記載の集積回路。
【請求項13】
前記少なくとも1つのエラー信号は、訂正されたエラー信号を含み、前記少なくとも1つの障害に対応する前記データは、前記訂正されたエラー信号に前記第1の部分によって集約された、訂正された障害に対応するデータを含み、前記集積回路は、
前記第1の部分から前記第2の部分へ前記訂正されたエラー信号を導く第3の信号導体をさらに備える、請求項11に記載の集積回路。
【請求項14】
前記第1の部分から前記第2の部分へシビアリティ信号を送信するための前記第1の部分と前記第2の部分との間の接続部であって、前記シビアリティ信号は、前記少なくとも1つの障害の各々のシビアリティ・レベルを示す、接続部をさらに備える、請求項1に記載の集積回路。
【請求項15】
各々、前記複数の論理ブロックのうちの少なくとも1つからの1つ又は複数の障害に対応するデータを受信し、前記1つ又は複数の障害に対応する前記データを1つ又は複数のエラー信号に集約し、前記1つ又は複数のエラー信号を前記少なくとも1つのエラー信号に集約する前記第1の部分に、前記1つ又は複数のエラー信号を送信する、複数の障害アグリゲータをさらに備える、請求項1に記載の集積回路。
【請求項16】
集積回路の第1の回路によって、前記集積回路の論理ブロック内で起きた少なくとも1つのエラーによって、各々発生した少なくとも1つの障害に対応するデータを受信することと、
前記第1の回路によって、前記少なくとも1つの障害に対応する前記データを少なくとも1つのエラー信号に集約することと、
前記第1の回路によって、前記集積回路の第2の回路に前記少なくとも1つのエラー信号を送信することであって、前記送信が第1のタイマを開始する、送信することと、
前記第1の回路によって、少なくとも1つの障害のうちの特定の1つを発生させた1つ又は複数のエラーが訂正されたことを判定することと、
前記第1の回路が前記1つ又は複数のエラーが訂正されたと判定した後に、前記第1の回路によって、前記特定の障害に対応する前記データをクリアすることであって、前記第1のタイマは、前記少なくとも1つの障害に対応する前記データがクリアされたときにリセットされる、クリアすることと、
前記第1のタイマが少なくとも第1の所定の時間が経過したことを示すときに、前記第1の回路によって、タイムアウト・エラー信号を前記第2の回路に送信することと、
前記第2の回路が前記タイムアウト・エラー信号を受信した後に、前記第2の回路によって、外部システムに通知することと、
を含む方法。
【請求項17】
前記第1の回路によって、前記特定の障害を発生させた前記1つ又は複数のエラーを識別することと、
前記第1の回路によって、前記1つ又は複数のエラーが前記集積回路の少なくとも1つの論理ブロックによって訂正されたことを判定することと、
前記第1の回路によって、前記特定の障害に対応する前記データが前記第1の回路からクリアされたことを前記第2の回路に知らせることと、
前記第2の回路によって、前記第2の回路からの前記特定の障害に対応する前記データをクリアすることと、
をさらに含む、請求項16に記載の方法。
【請求項18】
前記第1の回路によって、前記特定の障害を発生させた前記1つ又は複数のエラーを識別することと、
前記第1の回路によって、前記1つ又は複数のエラーを訂正する1つ又は複数の措置を実行することと、
前記第1の回路によって、前記特定の障害に対応する前記データが前記第1の回路からクリアされたことを前記第2の回路に知らせることと、
前記第2の回路によって、前記特定の障害に対応する前記データを前記第2の回路からクリアすることと、
をさらに含む、請求項16に記載の方法。
【請求項19】
前記第1の回路によって、前記特定の障害を発生させた前記1つ又は複数のエラーを識別することと、
前記第1の回路によって、記憶場所に障害情報を書き込むことと、
前記第1の回路によって、前記1つ又は複数のエラーのシビアリティを前記第2の回路に知らせることと、
前記第2の回路によって、前記1つ又は複数のエラーの前記シビアリティに少なくとも部分的に基づいて前記障害情報を読み取るかどうかを判断することと、
前記第2の回路によって、前記1つ又は複数のエラーを訂正する1つ又は複数の措置を実行することと、
前記第2の回路によって、前記特定の障害を発生させた前記1つ又は複数のエラーが訂正されたことを前記第1の回路に知らせることと、
前記特定の障害に対応する前記データを前記第1の回路及び前記第2の回路からクリアすることと、
をさらに含む、請求項16に記載の方法。
【請求項20】
前記第1の回路によって、前記特定の障害を発生させた前記1つ又は複数のエラーを識別することと、
前記第1の回路によって、前記1つ又は複数のエラーのシビアリティを前記第2の回路に知らせることと、
前記第2の回路によって、前記エラーの前記シビアリティに基づいて前記エラーを前記外部システムに通知することと、
をさらに含む、請求項16に記載の方法。
【請求項21】
前記外部システムに通知する前に、第2のタイマが少なくとも第2の所定の時間が経過したことを示すまで、前記第2の回路によって待機することであって、前記第2のタイマは、前記第2の回路が前記タイムアウト・エラー信号を受信したときに開始し、前記少なくとも1つの障害に対応する前記データが前記第2の回路からクリアされた後にリセットされる、待機することをさらに含む、請求項16に記載の方法。
【請求項22】
前記タイムアウト・エラー信号を受信した後に、前記第2の回路によって、1つ又は複数の訂正措置を実行することであって、前記1つ又は複数の訂正措置は、前記少なくとも1つの障害の各々を発生させた前記少なくとも1つのエラーを訂正する、実行することと、
前記少なくとも1つの障害に対応する前記データを前記第1の回路及び前記第2の回路からクリアすることであって、前記第2の回路は、前記第2のタイマが少なくとも前記第2の所定の時間が経過したことを示す前に、前記少なくとも1つの障害に対応する前記データが前記第2の回路からクリアされたときに前記外部システムに通知しない、クリアすることと、
をさらに含む、請求項21に記載の方法。
【請求項23】
前記少なくとも1つの障害に対応する前記データを前記第1の回路及び前記第2の回路からクリアすることは、
前記第2の回路によって、前記少なくとも1つの障害の各々を発生させた前記少なくとも1つのエラーが訂正されたことを前記第1の回路に知らせること、
前記第1の回路によって、前記少なくとも1つの障害のうちの各障害に対応する前記データを前記第1の回路からクリアすることと、
前記第1の回路によって、前記少なくとも1つの障害のうちの各障害に対応する前記データが前記第1の回路からクリアされたことを前記第2の回路に知らせることと、
前記第2の回路によって、前記少なくとも1つの障害のうちの各障害に対応する前記データを前記第2の回路からクリアすることと、
をさらに含む、請求項22に記載の方法。
【請求項24】
前記集積回路は、連続する半導体材料上に存在している、請求項16に記載の方法。
【請求項25】
前記集積回路は、車載システムのシステム・オン・チップ(「SoC」)の一部分を実装している、請求項16に記載の方法。
【請求項26】
前記第1の回路は、第1の電圧ドメイン及び第1のクロック・ドメイン内で動作し、
前記第2の回路は、第2の電圧ドメイン及び第2のクロック・ドメイン内で動作し、
前記第2の電圧ドメインは、前記第1の電圧ドメインとは異なり、
前記第2のクロック・ドメインは、前記第1のクロック・ドメインとは異なり、
前記第2の回路は、前記第1の回路よりも高いリスク分類レベルで動作する、請求項16に記載の方法。
【請求項27】
複数の障害アグリゲータの各々によって、複数の論理ブロックのうちの少なくとも1つからの1つ又は複数の障害を受信することと、
前記複数の障害アグリゲータの各々によって、前記障害アグリゲータによって受信された前記1つ又は複数の障害に基づいてエラー信号を生成することと、
前記複数の障害アグリゲータの各々によって、前記障害アグリゲータによって生成された前記エラー信号を前記第1の回路に送信して、前記少なくとも1つの障害を含む複数のエラー信号を送信することであって、前記第1の回路は、前記少なくとも1つの障害に対応する前記データを前記少なくとも1つのエラー信号に集約する、送信することと、
をさらに含む、請求項16に記載の方法。
【請求項28】
自律車両の集積回路であって、
前記自律車両を安全な状態にするために、複数の訂正措置を実行する安全部分であって、前記複数の訂正措置は、前記安全部分がタイムアウト・エラーがアサートされたことを検出したときに、外部システムに発信エラー信号を送信することを含む、安全部分と、
前記自律車両の少なくとも1つの機能を制御する駆動部分であって、前記駆動部分がエラー信号内の第1のアサートされたエラーを前記安全部分に送信したときに開始する第1のタイマを含み、前記第1のタイマは、前記駆動部分において最後のアサートされたエラーがディアサートされたときにリセットされ、前記駆動部分は、前記第1のタイマが少なくとも第1の所定の時間が経過したことを示すときに、タイムアウト・エラー信号内の前記タイムアウト・エラーをアサートする、駆動部分と、
前記駆動部分から前記安全部分へ前記エラー信号を導く第1の信号導体であって、前記安全部分は、前記エラー信号内の各アサートされたエラーのアサートされたエラーを含む、第1の信号同体と、
前記駆動部分から前記安全部分へ前記タイムアウト・エラー信号を導くタイムアウト信号導体と、
を備える集積回路。
【請求項29】
前記エラー信号内のアサートされた各エラーについて、
前記駆動部分は、前記エラーがアサートされた理由を識別し、
前記駆動部分の論理ブロックが前記エラーがアサートされた前記理由に適切に対処していると前記駆動部分が判定したときに、前記駆動部分は、前記駆動部分内の前記エラーをディアサートし、
前記駆動部分は、前記駆動部分において前記エラーがディアサートされたことを前記安全部分に通知し、
前記駆動部分において前記エラーがディアサートされたとの前記通知を前記安全部分が受信した後に、前記安全部分は、前記安全部分内の前記エラーをディアサートする、請求項28に記載の集積回路。
【請求項30】
前記エラー信号内のアサートされた各エラーについて、
前記駆動部分は、前記エラーがアサートされた理由を識別し、
前記駆動部分は、1つ又は複数の措置を実行して、前記エラーがアサートされた前記理由に対処し、
前記駆動部分は、前記駆動部分内の前記エラーをディアサートし、
前記駆動部分は、前記駆動部分において前記エラーがディアサートされたことを前記安全部分に通知し、
前記駆動部分において前記エラーがディアサートされたとの前記通知を前記安全部分が受信した後に、前記安全部分は、前記安全部分内の前記エラーをディアサートする、請求項28に記載の集積回路。
【請求項31】
前記エラー信号内のアサートされた各エラーについて、
前記駆動部分は、前記エラーがアサートされた理由を識別し、
前記駆動部分は、記憶場所に情報を書き込み、前記安全部分に前記エラーのシビアリティを通知し、
前記安全部分は、前記エラーの前記シビアリティに少なくとも部分的に基づいて前記情報を読み取るかどうかを判断し、
前記安全部分は、前記複数の訂正措置のうちの少なくとも1つを実行して、前記エラーがアサートされた前記理由に対処し、
前記安全部分は、前記エラーをディアサートするように前記駆動に通知し、
前記駆動部分が前記エラーをディアサートするとの前記通知を受信した後に、前記駆動部分は、前記駆動部分内の前記エラーをディアサートし、
前記駆動部分は、前記駆動部分において前記エラーがディアサートされたことを前記安全部分に通知し、
前記駆動部分において前記エラーがディアサートされたとの前記通知を前記安全部分が受信した後に、前記安全部分は、前記安全部分内の前記エラーをディアサートする、請求項28に記載の集積回路。
【請求項32】
前記エラー信号内のアサートされた各エラーについて、
前記駆動部分は、前記エラーがアサートされた理由を識別し、
前記駆動部分は、前記安全部分に前記エラーのシビアリティを通知し、
前記安全部分は、前記エラーの前記シビアリティに基づいて前記外部システムに前記エラーを通知する、請求項28に記載の集積回路。
【請求項33】
前記安全部分は、前記安全部分が前記タイムアウト・エラー信号内の前記タイムアウト・エラーを受信したときに開始する第2のタイマを含み、
前記第2のタイマは、前記安全部分がアサートされたエラーをもはや含まなくなったときにリセットされ、
前記安全部分は、前記外部システムに前記発信エラー信号を送信する前に、前記第2のタイマが少なくとも第2の所定の時間が経過したことを示すまで待機する、請求項28に記載の集積回路。
【請求項34】
前記安全部分は、前記タイムアウト・エラー信号内の前記タイムアウト・エラーを受信した後に、前記複数の訂正措置のうちの少なくとも1つを実行し、前記エラー信号内のアサートされた各エラーをディアサートするように前記駆動部分に通知し、前記第2のタイマが少なくとも前記第2の所定の時間が経過したことを示す前に、前記安全部分が前記エラー信号内のアサートされた各エラーをディアサートするように前記駆動部分に通知したときに、前記安全部分は前記発信エラー信号を送信しない、請求項33に記載の集積回路。
【請求項35】
単一の半導体材料上に存在している、請求項28に記載の集積回路。
【請求項36】
前記安全部分は、前記駆動部分よりも高いリスク・レベルで動作する、請求項28に記載の集積回路。
【請求項37】
前記エラー信号内の各アサートされたエラーは、訂正されていないエラーであり、前記エラー信号は、訂正されていないエラー信号であり、前記第1の信号導体は、訂正されていないエラー信号導体であり、前記駆動部分は、前記安全部分に、訂正されたエラー信号内のアサートされた訂正されたエラーを送信し、前記集積回路は、
前記駆動部分から前記安全部分へ前記訂正されたエラー信号を導く訂正された信号導体であって、前記安全部分は、前記訂正されたエラー信号内の各アサートされた訂正されたエラーのアサートされた訂正されたエラーを含む、訂正された信号導体をさらに備える、請求項28に記載の集積回路。
【請求項38】
前記駆動部分から前記安全部分へシビアリティ信号を送信するための前記駆動部分と前記安全部分との間の接続部であって、前記シビアリティ信号は、前記エラー信号内のアサートされたエラーのシビアリティ・レベルを示す、接続部をさらに備える、請求項28に記載の集積回路。
【請求項39】
各々、複数の論理ブロックのうちの少なくとも1つからの1つ又は複数の障害を受信し、前記1つ又は複数の障害を1つ又は複数のエラー信号に集約し、前記1つ又は複数のエラー信号を前記エラー信号に集約する前記駆動部分に、前記1つ又は複数のエラー信号を送信する、複数の障害アグリゲータをさらに備える、請求項28に記載の集積回路。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2021年7月30日に出願された「COMMUNICATING FAULTS TO AN ISOLATED SAFETY REGION OF A SYSTEM ON A CHIP」なる名称のインド仮出願第202111034493号(代理人整理番号第21-BG-1522IN01)の利益を主張し、この仮出願の内容はすべて、参照により本書に組み込まれる。
【0002】
少なくとも1つの実施例は、回路の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:System on a Chip)に特定の障害が検出されると、少なくとも一部の安全サービスが外部制御ユニットによって実行される。一般的に、外部制御ユニットは、車載SoC(例えば、ASIL-B)よりも高いリスク・レベル(例えば、ASIL-D)で動作し得る。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許出願第16/101,232号
【非特許文献】
【0005】
【非特許文献1】「Taxonomy and Definitions for Terms Related to Driving Automation Systems for On-Road Motor Vehicles」(規格番号J3016-201806、2018年6月15日発行、規格番号J3016-201609、2016年9月30日発行、並びにこの規格の以前及び将来のバージョン)
【発明の概要】
【発明が解決しようとする課題】
【0006】
残念ながら、このような外部制御ユニットはレイテンシを発生させ、また、DRAM、不揮発性メモリなど、車載SoCにも存在し、且つ各々が車載プラットフォーム内(例えば、回路基板上)のスペースを占有する別個のコンポーネントを必要とするため、高価になる可能性がある。
【0007】
システム・オン・チップの領域を分離する本システム及び方法について、添付の図面を参照して以下に詳細に説明する。
【図面の簡単な説明】
【0008】
【
図1】本開示のいくつかの実施例による車載プラットフォームの例の図である。
【
図2】本開示のいくつかの実施例による、車載SoCに統合された安全アイランドを車載SoCの他のコンポーネントに接続するインターフェースの例の図である。
【
図3】本開示のいくつかの実施例による、安全アイランドをコクーン・モードと非分離モードとの間で遷移させる方法を示すフロー図である。
【
図4】本開示のいくつかの実施例による、車載SoCの他のコンポーネントから安全アイランドに障害を伝達する障害インターフェースの例の図である。
【
図5A】本開示のいくつかの実施例による、安全アイランドに障害を伝達する方法を示すフロー図である。
【
図5B】本開示のいくつかの実施例による、SoC障害アグリゲータから受信した割り込みを処理するためにプロセッサが使用し得る方法を示すフロー図である。
【
図5C】本開示のいくつかの実施例による、訂正されたエラー信号及び訂正されていないエラー信号を処理するためにSI110が使用し得る方法を示すフロー図である。
【
図5D】本開示のいくつかの実施例による、SoC障害アグリゲータ信号を処理するためにSI110が使用し得る方法を示すフロー図である。
【
図6A】本開示のいくつかの実施例による、シビアリティの低い訂正されていないエラー(例えば、最小値)がアサートされた後に、安全アイランドのプロセッサによって送受信される信号の信号タイミング図の例を示す。
【
図6B】本開示のいくつかの実施例による、シビアリティの高い訂正されていないエラー(例えば、最大値)がアサートされた後に、安全アイランドのプロセッサによって送受信される信号の信号タイミング図の例を示す。
【
図6C】本開示のいくつかの実施例による、訂正されていないエラー(例えば、最大値)がアサートされた後であるが、安全アイランドはメールボックス割り込みを受信していない、安全アイランドのプロセッサによって送受信される信号の信号タイミング図の例を示す。
【
図7】本開示のいくつかの実施例による、安全アイランドと車載SoCの他のコンポーネントとによって共有される揮発性メモリに定義されたカーブアウト部(carve-out)にデータを書き込む方法を示すフロー図である。
【
図8】本開示のいくつかの実施例による、
図7の方法を実行する安全アイランドのエラー検出ブロックの一例を示す。
【
図9】本開示のいくつかの実施例による、カーブアウト部からデータを読み取るための方法を示すフロー図である。
【
図10】本開示のいくつかの実施例による、
図9の方法を実行する安全アイランドのエラー検出ブロックの一例を示す。
【
図11】いくつかの実施例による、エラー検出ブロックにエグレス・タイマ及びイングレス・タイマが含まれている、又はエラー検出ブロックがこれらに接続されている場合に、エラー検出ブロックによって生成されるエラー通知を示すブロック図の図である。
【
図12】本開示のいくつかの実施例による自律車両の例の図である。
【
図13】本開示のいくつかの実施例による、
図12の自律車両の例のカメラ位置及び視野の一例である。
【
図14】本開示のいくつかの実施例による、
図12の自律車両の例のシステム・アーキテクチャの例のブロック図である。
【
図15】本開示のいくつかの実施例による、クラウドベースのサーバと
図12の自律車両の例との間の通信のためのシステム図である。
【
図16】本開示のいくつかの実施例を実装する際の使用に適しているコンピューティング・デバイスの例のブロック図である。
【発明を実施するための形態】
【0009】
より高いリスク・レベル(例えば、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)と呼ばれることがある。
【0010】
車載処理システム102は、少なくとも1つの車載SoC104を含む。車載SoC104は、少なくともいくつかの機能を実行するが、1つ又は複数の安全機能を任意選択の外部制御ユニット106(例えば、外部ASIL-Dマイクロコントローラ・ユニットを含む)にオフロードすることができる。任意選択の外部制御ユニット106は、車載SoC104よりも高いリスク分類レベル(例えば、ASIL-D)で動作し、これに準拠し得る。任意選択の外部制御ユニット106を含む実施例では、車載SoC104で障害が発生すると、その障害は任意選択の外部制御ユニット106に伝達される。このユニット106は、車載プラットフォーム100を安全な状態に戻すために1つ又は複数の措置を行うことができる。このため、安全機能の少なくとも一部が任意選択の外部制御ユニット106によって実行され得る。しかしながら、任意選択の外部制御ユニット106は、レイテンシを発生させる場合があり、また、各々が車載プラットフォーム100内(例えば、回路基板上)のスペースを占有する、DRAM、不揮発性メモリなどの別個のコンポーネントが必要になり得るため、高価になる可能性がある。
【0011】
任意選択の外部制御ユニット106によって発生するレイテンシと費用の少なくとも一部を回避するために、
図1の車載プラットフォーム100は、車載SoC104に統合された機能安全アイランド又は安全アイランド(SI:Safety Island)110を含む。SI110は、車載SoC104の残りの部分と比較してより高いリスク分類レベル(例えば、ASIL-D)で動作し、これに準拠するコンピュート・クラスタとして実装され得る。SI110は、任意選択の外部制御ユニット106によって通常実行される機能の少なくとも一部を実行することができる。SI110の存在は、任意選択の外部制御ユニット106を完全に省略したり、性能の低い及び/又はコストの低い外部制御ユニットを使用して実装したりすることを可能にする。例えば、任意選択の外部制御ユニット106が存在する場合、コントローラ・エリア・ネットワーク(CAN:Controller Area Networkバス)バス上での通信の提供、車載SoC104のリセット・コントローラの提供、及び/又はオンボード電圧モニタリングの実行など、1つ又は複数のレガシー機能を実行することができる。
【0012】
車載SoC104及び任意選択の外部制御ユニット106(存在する場合)に加えて、車載処理システム102は、車載SoC104用の第1の(SoC)クロック112、SI110用の第2の(SI)クロック114、及び電力管理集積回路(IC:Integrated Circuit)116を含み得る。車載処理システム102のコンポーネントの各々は、少なくとも部分的にハードウェアに実装されている。車載処理システム102の論理コンポーネント(例えば、車載SoC104及び任意選択の外部制御ユニット106)の各々は、通常、1つ又は複数の集積回路チップ内のハードウェア論理回路に実装されている。論理は、ハードワイヤード若しくはプログラム可能であるか、又はハードワイヤードとプログラム可能な要素の組み合わせであり得る。加えて又は或いは、車載処理システム102のある機能は、組み込みマイクロプロセッサ又はマイクロコントローラによって実行されるソフトウェア又はファームウェアに実装されてもよい。
【0013】
第1のクロック112及び第2のクロック114は、2つの別個のクロック信号を車載SoC104に提供する。具体的には、第1の(SoC)クロック112によって生成された第1のクロック信号が、SI110以外の車載SoC104のコンポーネント160に提供され、第2の(SI)クロック114によって生成された第2のクロック信号がSI110に提供される。したがって、SI110及び他のコンポーネント160は、別個のクロック・ドメイン内で動作していると特徴付けることができる。SI110のクロック・ドメインはSIクロック・ドメインと呼ばれ、他のコンポーネント160のクロック・ドメインはSoCクロック・ドメインと呼ばれる。第1のクロック112及び第2のクロック114の各々は、少なくとも部分的に水晶発振器として実装され得る。第1の(SoC)クロック112は、ワイヤ、信号トレースなどの第1のクロック接続(図示せず)を介して、車載SoC104の他のコンポーネント160の少なくとも一部の各々に接続され得る。したがって、第1の(SoC)クロック112は、第1のクロック接続(図示せず)を介して、車載SoC104の他のコンポーネント160に第1のクロック信号を提供することができる。第2の(SI)クロック114は、ワイヤ、信号トレースなどの第2のクロック接続(図示せず)を介して、SI110のコンポーネントの少なくとも一部の各々に接続され得る。したがって、第2の(SI)クロック114は、第2のクロック接続(図示せず)を介して、SI110に第2のクロック信号を提供することができる。
【0014】
電力管理IC116は、車載処理システム102の他のコンポーネントに電力を供給する。例えば、電力レール又は接続118A~118Cが、それぞれ、電力管理IC116を車載SoC104の他のコンポーネント160、SI110、及び任意選択の外部制御ユニット106に接続する。電力接続部118A~118Cは、それぞれ、車載SoC104の他のコンポーネント160、SI110、及び任意選択の外部制御ユニット106(存在する場合)を互いに電気的に分離するのに役立つ。したがって、SI110は、他のコンポーネント160及び任意選択の外部制御ユニット106(存在する場合)とは別個の電圧ドメイン内で動作することができる。SI110の電圧ドメインはSI電圧ドメインと呼ばれ、他のコンポーネント160の電圧ドメインはSoC電圧ドメインと呼ばれる。電力管理IC116は、車載処理システム102のコンポーネントに十分な電力を供給する1つ又は複数の集積回路として実装され得る。電力接続部118A~118Cの各々は、送電線、ワイヤ、電力トレースなどの導電性要素として実装され得る。
【0015】
前述のように、SI110はSIクロック・ドメインとSI電圧ドメインとで動作する。SIクロック・ドメインとSI電圧ドメインとは合わせてSIドメインと呼ぶ。同様に、他のコンポーネント160はSoCクロック・ドメインとSoC電圧ドメインとで動作する。SoCクロック・ドメインとSoC電圧ドメインとは合わせてSoCドメインと呼ぶ。
【0016】
車載SoC104の他のコンポーネント160には、メイン中央処理ユニット(CPU:Central Processing Unit)コンプレックス120、補助安全ユニット122、車載SoC機能を実行するための回路124、揮発性データ・ストレージ又はメモリ126(例えば、ダイナミック・ランダム・アクセス・メモリ(DRAM:Dynamic Random Access Memory))、及び不揮発性データ・ストレージ又はメモリ128が含まれ得る。メインCPUコンプレックス120は、ASIL-Bで動作する1つ又は複数のプロセッサとして実装され得る。このような実施例では、SI110はより高いレベルのASIL(例えば、ASIL-D)で動作し得るため、車載SoC104は、複数の又は混合されたASILで動作し得る。非限定的な例として、回路124は、1つ又は複数のディスプレイ、1つ又は複数の車載入出力(I/O:Input/Output)コントローラ、1つ又は複数のメモリ・コントローラ、1つ又は複数のインターコネクトなどを実装するハードウェアを含み得る。図示する実施例では、回路124は、複数の論理ブロックLB(1)~LB(N)を含む又は実装するものとして示されている。これらの論理ブロックの各々は知的財産(IP:Intellectual Property)としばしば呼ばれる。論理ブロックLB(1)~LB(N)は、自律車両(例えば、
図12に示す自律車両1200)内に様々な機能を実装することができる。
【0017】
任意選択の外部制御ユニット106には、コントローラ130、障害アグリゲータ132、揮発性データ・ストレージ又はメモリ136(例えば、DRAM)、及び不揮発性データ・ストレージ又はメモリ138が含まれ得る。任意選択の外部制御ユニット106にはまた、任意選択の外部制御ユニット106によって実行される安全機能を実装する1つ又は複数の論理ブロック(図示せず)が含まれ得る。コントローラ130は、ASIL-Dで動作する1つ又は複数のプロセッサ(例えば、マイクロコントローラ)として実装され得る。コントローラ130は、不揮発性メモリ138に記憶されている1つ又は複数の車載オープン・システム・アーキテクチャ(AUTOSAR:Automotive Open System Architecture)ソフトウェア規格に準拠した命令などの命令を実行する。この命令は、障害アグリゲータ132が車載SoC104から障害を受信した場合に、コントローラ130に適切な措置を行うように指示し得る。
【0018】
1つ又は複数の実施例では、SI110には、プロセッサ140、割り込みコントローラ141、SI障害アグリゲータ142、揮発性データ・ストレージ又はメモリ146(例えば、スタティック・ランダム・アクセス・メモリ(SRAM:Static Random-Access Memory))、及び1つ又は複数の論理ブロック148が含まれている。プロセッサ140は、高ランクのASIL-D安全プロセッサなど、プロセッサのクラスタとして実装され得る。プロセッサ140は、ブート時に不揮発性メモリ128から取得し、揮発性メモリ146に記憶されたAUTOSARソフトウェア規格に準拠した命令などの命令149を実行する。この命令149は、SI障害アグリゲータ142が車載SoC104の他のコンポーネント160から障害を受信した場合に、プロセッサ140に適切な措置を行うように指示し得る。論理ブロック148は、SI110によって実行される安全機能の実装に役立ち得る。
【0019】
補助安全ユニット122は、リアルタイム安全補助処理ユニットとして実装され得る、及び/又はASIL-B以上のランクにされ得る。つまり、補助安全ユニット122は、SoCドメイン内の他のコンポーネントと同じリスク分類レベル又はより高いリスク分類レベルで動作し得る。補助安全ユニット122には、プロセッサ150、1つ又は複数のSoC障害アグリゲータ152、割り込みコントローラ154、及び、メールボックス156と呼ばれる1つ又は複数の論理ブロックが含まれている。SI障害アグリゲータ142及び障害アグリゲータ132(存在する場合)の各々は、SoC障害アグリゲータ152から障害を受信することができる。したがって、SoC障害アグリゲータ152は、1つ又は複数の障害インターフェース170を介して障害アグリゲータ132に接続でき、1つ又は複数の障害インターフェース172を介してSI障害アグリゲータ142に接続される。障害インターフェース170及び172の各々には、SoC障害アグリゲータ152の各々を障害アグリゲータ132又はSI障害アグリゲータ142のうちの対応する1つに物理的に接続するワイヤ、信号トレースなどの接続が含まれている。
【0020】
メールボックス156には、プロセッサ150が書き込み、プロセッサ140が読み取る第1のメールボックスと、プロセッサ140が書き込み、プロセッサ150が読み取る第2のメールボックスとが含まれ得る。メールボックス156は、プロセッサ150(例えば、ASIL-B以上のランクの中央処理ユニット(「CPU」))によって使用されて、メールボックス割り込みを割り込みコントローラ141に報告し、割り込みコントローラ141から割り込みを受信し得る。したがって、障害インターフェース172には、メールボックス156を割り込みコントローラ141に接続する信号導体が少なくとも1つ含まれている。各メールボックス割り込みには、エラーのシビアリティを示すシビアリティ識別子が含まれている。非限定的な例として、シビアリティ識別子は最小値(例えば、ゼロ)から最大値(例えば、7)までの数値であり得る。別の非限定的な例として、割り込みには、シビアリティを示すように先験的にエンコードされた割り込み番号があってもよい。プロセッサ140及び/又はプロセッサ150は、障害情報をメールボックス156に書き込むことができる。障害情報には、エラーが発生した論理ブロック名、論理ブロック診断識別子、障害の性質、シビアリティ識別子など、障害を発生させたエラーに関する情報が含まれる。
【0021】
SI110を車載SoC104に統合すると、任意選択の外部制御ユニット106も省略した場合に、多数の別個のコンポーネント(例えば、揮発性メモリ136及び不揮発性メモリ138)を車載処理システム102から省略することが可能になり得る。それでもなお、SI110を車載SoC104の他のコンポーネント160(例えば、メインCPUコンプレックス120、補助安全ユニット122、回路124、揮発性メモリ126、及び不揮発性メモリ128)から分離して、他のコンポーネント160のうちの1つ又は複数に生じる可能性のある問題がSI110に悪影響を与えないようにすることが必要である。例えば、このような分離は、SI110が、車載SoC104の他のコンポーネント160のうちの1つ又は複数で発生する停止状態による影響を受けないようにするのに役立ち得る。他のコンポーネント160のうちの1つ又は複数で発生する可能性のある停止状態のタイプの非限定的な例には、ランダムな障害、クロックの問題、電力の問題、及び/又は電圧の問題がある。空間的近接性と、SI110が車載SoC104の他のコンポーネント160と共有する1つ又は複数のインターフェース200(
図2を参照)とにより、このような停止状態はSI110に移行し、そのためにSI110が車載SoC104に統合されたフォールバック及び/又はフェイルセーフ機能を実行できなくする可能性がある。このため、車載処理システム102は、SI110を車載SoC104の他のコンポーネント160から絶縁して、車載SoC104と任意選択の外部制御ユニット106との間の分離に匹敵する分離を実現している。このような分離は、第1のクロック112及び第2のクロック114、第1の電力接続部118A及び第2の電力接続部118B、並びにインターフェース200によって実現することができる。
【0022】
第1の(SoC)クロック112は、第2の(SI)クロック114(例えば、別個の基準水晶を含む)とは別個であり、これは、SI110を車載SoC104の他のコンポーネント160から分離するのに役立つ。同様に、第1の電力接続部118Aは、第2の電力接続部118Bとは別個であり、これは、SI110を車載SoC104の他のコンポーネント160から分離するのに役立つ。前述のように、SI110は、車載SoC104の他のコンポーネント160とは別個のSI電圧ドメインで動作し得る。しかし、別個の第2の(SI)クロック114と別個の第2の電力接続部118Bを使用しても、SI110はインターフェース200(
図2を参照)を介して車載SoC104の他のコンポーネント160と通信する。
【0023】
論理ブロック148には、専用の第2の(SI)クロック114に接続されたクロック及びリセット回路230(
図2を参照)が含まれている。専用の第2の(SI)クロック114は、クロック及びリセット回路230の基準クロックとして使用され得る。例えば、クロック及びリセット回路230には、SI110の他の機能クロック及びデバッグ・クロックを派生させるために使用される内部専用位相ロック・ループ(PLL:Phased-Locked Loop)が含まれている場合がある。非限定的な例として、クロック及びリセット回路230は、PLLから派生され得るデバッグ・クロック信号及びテスト・クロック信号を提供することができる。クロック及びリセット回路230は、SI110内で使用されるすべてのクロック及びリセット信号を生成することができる。つまり、クロック及びリセット回路230は、SIドメイン内で使用されるクロック信号及びリセットを生成することができる。加えて又は或いは、第2の(SI)クロック114は、論理ブロック148のうちの1つ又は複数の機能クロックとして直接使用することもできる。このようにして、SI110はローカルで生成されたクロック信号及びリセット、並びに/又は第2の(SI)クロック114によって提供されるクロック信号を使用する。SI110では、他のコンポーネント160からのクロック信号又はリセットは使用されない。クロック及びリセット回路230は、他のコンポーネント160内のリセットを生成する論理(例えば、リセット・ブロック)からの摂動がSI110のコンポーネントに到達しないことを確実にするのに役立つ。
【0024】
図2は、少なくとも1つの実施例による、SI110を車載SoC104の他のコンポーネント160に接続するインターフェース200の図である。
図2を参照すると、インターフェース200は、車載SoC104内のSI110の回路と論理の論理的分離を提供する。図示する実施例では、インターフェース200には、障害インターフェース172、揮発性メモリ・インターフェース200A、第1の制御バックボーン・インターフェース200B、第2の制御バックボーン・インターフェース200C、セキュア・コンテンツ・インターフェース200D、デバッグ・インターフェース200E、及びテスト・インターフェース200Fが含まれている。障害インターフェース172は、SoC障害アグリゲータ152から論理的に分離されていなくてもよいが、各障害インターフェースは1つ又は複数の電圧レベル・シフタ240を通過するか又はそれらを含んでいてもよい。各電圧レベル・シフタ240はSI電圧ドメインとSoC電圧ドメインとの間の電気的分離を提供する。電圧レベル・シフタ240の各々は、電気的分離を提供するが、電圧レベル・シフタ240は、割り込みストーム、障害ストーム、及び/又は連続アサートなど、いくつかのタイプの故障に対して適切な分離を提供しない場合がある。SI障害アグリゲータ142には、障害インターフェース172経由で障害情報を受信し、プロセッサ140によって実行される命令149にそのような故障の通知を提供する1つ又は複数のステータス・ビット242が含まれている場合がある。図示する実施例では、ステータス・ビット242には、ステータス・ビット「BT1」、「BT2」、及び「BT3」(
図4を参照)が含まれている。命令149は、プロセッサ140にこの通知を使用して、障害インターフェース172で発生する停止状態を緩和するように指示する。
【0025】
揮発性メモリ・インターフェース200Aは、プロセッサ140と車載SoC104の揮発性メモリ126との間のインターフェースである。揮発性メモリ・インターフェース200Aにより、プロセッサ140は揮発性メモリ126に情報を書き込み、揮発性メモリ126から情報を読み取ることができる。揮発性メモリ・インターフェース200Aには、ワイヤ、信号トレースなど、揮発性メモリ126との1つ又は複数の接続が含まれている。揮発性メモリ・インターフェース200Aには、論理的分離制御部220、アクセス・タイマ222、及びドメイン同期回路224が含まれ得る。論理的分離制御部220には、プロセッサ140によって選択的にロック及びロック解除できるゲート又はロック機構が含まれている。アクセス・タイマ222により、プロセッサ140によって開始されたアクセス試行がタイムアウトできる。
【0026】
ドメイン同期回路224には、位相同期回路と電圧レベル・シフタとが含まれている。位相同期回路は、別個の第1のクロック112及び第2のクロック114(
図1を参照)を使用して生成されたSIドメイン及びSoCドメインにわたって通信される信号の位相を同期するのに役立つ。クロック及びリセット回路230によって生成されたリセットは、位相同期回路など、SI及びSoC電圧及びクロック・ドメインを横断する任意の要素によって使用され得る。位相同期回路には、各々、別個の合成トップ(synthesis top)として機能し得るSoC部分とSI部分とがある。SoC部分は物理的にSoCドメインに存在し、SI部分は物理的にSIドメインに存在する。SI部分とSoC部分の両方の論理は、クロック及びリセット回路230によって生成されたリセットを使用する。したがって、SI110によって生成されるリセットは、SI110よりも低いASILで動作し得る車載SoC104の論理によって使用され得るが、車載SoC104によって生成されるリセットは、SI110に伝達されず、SI110によって使用され得ない。非限定的な例として、位相同期回路は、スプリット・ファースト・イン・ファースト・アウト(FIFO:First-In-First-Out)などとして実装され得る。ドメイン同期回路224の電圧レベル・シフタは、電圧レベル・シフタ240と実質的に同一であり、SI及びSoC電圧ドメインを介して送信される信号の電圧を調整して、信号がSI及びSoCドメインを介して安全に通信できるようにすることができる。アクセス・タイマ222がプロセッサ140によるアクセスがタイムアウトしたことを示す場合、要求はドメイン同期回路224から削除され得る(例えば、スプリットFIFOからポップされる)。
【0027】
揮発性メモリ・インターフェース200Aがロック解除されると、プロセッサ140は揮発性メモリ126にアクセスすることができ、揮発性メモリ126は、アクセス・タイマ222を開始する。アクセス・タイマ222が第1の所定の時間を超えて経過していて、揮発性メモリ126からの応答が受信されていないことを示す場合、プロセッサ140は、安全障害を示し、論理的分離制御部220を使用して揮発性メモリ・インターフェース200Aをロックする。任意選択で、ロック解除されているインターフェース200のいずれかをロックし、また、任意選択で、車載プラットフォーム100(
図1を参照)を安全な状態に戻すように構成されている1つ又は複数の措置を行う。一方、アクセス・タイマ222が第1の所定の時間が経過したことを示す前に応答が受信される場合、アクセス・タイマ222は自身をリセットし、プロセッサ140はアクセスを完了し、また、プロセッサ140はアクセスが完了した後に、揮発性メモリ・インターフェース200Aをロックする。したがって、揮発性メモリ・インターフェース200Aは、プロセッサ140が揮発性メモリ126にアクセスしていない場合は常にロックされたままになる。これは、揮発性メモリ126からSI110に移動する障害及び/又は停止状態からSI110を保護するのに役立つ。
【0028】
第1の制御バックボーン・インターフェース200B及び第2の制御バックボーン・インターフェース200Cは、プロセッサ140と制御バックボーン210との間のインターフェースである。制御バックボーン210は、バスなどとして実装され得る。第1の制御バックボーン・インターフェース200Bは、プロセッサ140から制御バックボーン210への通信用で、第2の制御バックボーン・インターフェース200Cは、制御バックボーン210からプロセッサ140への通信用である。非限定的な例として、プロセッサ140は制御バックボーン210を介して、車載SoC104の他のコンポーネント160の少なくとも一部(例えば、回路124、メールボックス156、及び不揮発性メモリ128)にアクセスできる。
【0029】
第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つ又は複数のセキュリティ・ルールを実装し、該セキュリティ・ルールに基づいて各通信を許可したりブロックしたりする。
【0030】
第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つ又は複数のセキュリティ・ルールを実装し、該セキュリティ・ルールに基づいて各通信を許可したり、ブロックしたりする。
【0031】
セキュア・コンテンツ・インターフェース200Dは、プロセッサ140とセキュア・コンテンツ回路212との間のインターフェースである。セキュア・コンテンツ・インターフェース200Dにより、プロセッサ140は、セキュア・コンテンツ回路212から命令及び/又は情報(例えば、セキュアなコンテンツ及び/又は機密コンテンツ)を受信できる。セキュア・コンテンツ・インターフェース200Dには、論理的分離制御部220及びドメイン同期回路224が含まれ得る。セキュア・コンテンツ・インターフェース200Dの論理的分離制御部220は、揮発性メモリ・インターフェース200Aの論理的分離制御部220と実質的に同一であり、また、実質的に同一に機能する。したがって、セキュア・コンテンツ・インターフェース200Dの論理的分離制御部220により、プロセッサ140はセキュア・コンテンツ・インターフェース200Dをロックしたり、ロック解除したりできる。セキュア・コンテンツ・インターフェース200Dのドメイン同期回路224は、揮発性メモリ・インターフェース200Aのドメイン同期回路224と実質的に同一であり、また、実質的に同一に機能する。
【0032】
デバッグ・インターフェース200Eは、プロセッサ140とデバッグ回路214との間のインターフェースである。デバッグ・インターフェース200Eにより、プロセッサ140はデバッグ回路214から命令及び/又は情報を受信できる。デバッグ・インターフェース200Eには、論理的分離制御部220及びドメイン同期回路224が含まれ得る。デバッグ・インターフェース200Eの論理的分離制御部220は、揮発性メモリ・インターフェース200Aの論理的分離制御部220と実質的に同一であり、また、実質的に同一に機能する。したがって、デバッグ・インターフェース200Eの論理的分離制御部220により、プロセッサ140はデバッグ・インターフェース200Eをロックしたり、ロック解除したりできる。デバッグ・インターフェース200Eのドメイン同期回路224は、揮発性メモリ・インターフェース200Aのドメイン同期回路224と実質的に同一で、機能する。前述したように、SI110及び他のコンポーネント160は、別個のクロック・ドメインで動作する。1つ又は複数の実施例では、デバッグ回路214など、車載SoC104の他のコンポーネント160のうちの1つ又は複数の外部クロックからの信号はSI110に供給されない。車載SoC104によって実行されるデバッグ機能は、デバッグ・インターフェース200Eのドメイン同期回路224を介してデバッグ・クロック信号を受信する。この信号は、車載SoC104によって実行されるデバッグ機能を、SI110によって生成されたデバッグ・クロック信号及び/又は第2の(SI)クロック114を使用することに切り替えるか又は変換する。SI110がミッション・モードになっている間(例えば、車両が走行中)は、デバッグ論理は使用されないため、SI110はデバッグ・クロックに第1のクロック・ゲートを含んで、デバッグ・クロック信号によって生じる可能性がある干渉を防止する。非限定的な例として、第1のクロック・ゲートはクロック及びリセット回路230のコンポーネントであり得る。第1のクロック・ゲートは、プロセッサ140によって設定された第1の構成ビットを使用して制御できる(例えば、選択的にオンオフが切り替えられる)。
【0033】
テスト・インターフェース200Fは、プロセッサ140とテスト回路216との間のインターフェースである。テスト・インターフェース200Fにより、プロセッサ140はテスト回路216から命令及び/又は情報を受信できる。テスト・インターフェース200Fには、論理的分離制御部220及びドメイン同期回路224が含まれ得る。テスト・インターフェース200Fの論理的分離制御部220は、揮発性メモリ・インターフェース200Aの論理的分離制御部220と実質的に同一であり、また、実質的に同一に機能する。したがって、テスト・インターフェース200Fの論理的分離制御部220により、プロセッサ140はテスト・インターフェース200Fをロックしたり、ロック解除したりできる。テスト・インターフェース200Fのドメイン同期回路224は、揮発性メモリ・インターフェース200Aのドメイン同期回路224と実質的に同一であり、また、実質的に同一に機能する。前述のように、テスト回路216など、車載SoC104の他のコンポーネント160のうちの1つ又は複数からの外部信号は、この構成によってSI110に供給されることが防止される。車載SoC104によって実行されるテスト機能は、デバッグ・インターフェース200Eのドメイン同期回路224を介してテスト・クロック信号を受信する。この信号は、車載SoC104によって実行されるテスト機能を、SI110によって生成されたテスト・クロック信号及び/又は第2の(SI)クロック114を使用することに切り替えるか又は変換する。SI110がミッション・モードになっている間(例えば、車両が走行中)は、テスト論理は使用されないため、SI110はテスト・クロックに第2のクロック・ゲートを含んで、テスト・クロック信号によって生じる可能性のある干渉を防止する。非限定的な例として、第2のクロック・ゲートはクロック及びリセット回路230のコンポーネントであり得る。第2のクロック・ゲートは、プロセッサ140によって設定された第2の構成ビットを使用して制御できる(例えば、選択的にオンオフが切り替えられる)。
【0034】
SI110には、分離又はコクーン・モードと非分離モードとの少なくとも2つの動作モードがある。SI110がコクーン・モードで動作している場合、SI110に入ることが許可される車載SoC104からの唯一の情報は障害情報であり、この情報は、障害インターフェース172を介してSI110に入る。このようにして、SI障害アグリゲータ142は、車載SoC104及びSI110の累積的な正常性状態を維持する。一方、SI110が非分離モードで動作している場合、情報はインターフェース200のうちの1つ又は複数を介してSI110に入ることができる。SI110がコクーン・モードで動作しているか、非分離モードで動作しているかは、プロセッサ140で実行される命令149によって少なくとも部分的に、且つインターフェース200によって少なくとも部分的に判定される。
【0035】
車載SoC104の他のコンポーネント160で発生する可能性のある安全に関する重要な問題がインターフェース200のうちの1つ又は複数を介してSI110に到達することを防止するのに役立つように、インターフェース200の各々には、プロセッサ140によって選択的にロックされたり、ロック解除されたりする別個の論理的分離制御部220が含まれている。論理的分離制御部220のロック機構がプロセッサ140によってロックされている場合、ロック機構は、ロックされたインターフェースを介して車載SoC104とSI110との間のすべての通信を防止する。一方、インターフェースはプロセッサ140によってロック解除されて、ロック解除されたインターフェースを介してそのような通信を可能にし得る。したがって、プロセッサ140は選択的にSI110をコクーン・モード又は非分離モードにすることができる。すべてのインターフェース200がロックされている場合は常に、プロセッサ140は揮発性メモリ126又は不揮発性メモリ128のいずれにもアクセスできず、SI110内に存在する揮発性メモリ146(例えば、SRAM)に記憶されている命令149を実行する。
【0036】
ここで、
図3を参照すると、本明細書に説明される方法300の各ブロックには、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組み合わせを使用して実行され得るコンピューティング・プロセスが含まれる。例えば、様々な機能は、メモリ(例えば、
図1、
図2、及び
図4に示す揮発性メモリ146)に記憶された命令(例えば、
図1、
図2、及び
図4に示す命令149)をプロセッサ(例えば、
図1、
図2、及び
図4に示すプロセッサ140)が実行することによって実行され得る。方法300はまた、コンピュータ記憶媒体に記憶されたコンピュータ使用可能命令としても具体化され得る。方法300は、いくつか例を挙げると、スタンドアロン・アプリケーション、サービス又はホスト・サービス(スタンドアロン又は別のホスト・サービスとの組み合わせ)、又は別の製品へのプラグ・インによって提供され得る。また、方法300は、例として、
図1の車載プラットフォーム100に関して説明される。しかしながら、方法300は、加えて又は或いは、任意の1つのシステム、又は本明細書で説明されているものを含むが、これらに限定されないシステムの任意の組み合わせによって実行され得る。
【0037】
図3は、本開示のいくつかの実施例による、SI110をコクーン・モードと非分離モードとの間で遷移させる方法300を示すフロー図である。説明を容易にするために、方法300はプロセッサ140(
図1、
図2、及び
図4を参照)によって実行されているものとして説明する。
図3を参照すると、第1のブロック302において、プロセッサ140は、車載SoC104の他のコンポーネント160(
図1及び
図2を参照)のうちの1つと通信する必要があると判定する。例えば、この通信は揮発性メモリ・インターフェース200A又は第1の制御バックボーン・インターフェース200Bを介して行われ得る。これらのインターフェースの各々により、SI110が車載SoC104の他のコンポーネント160との通信を開始できる。或いは、この通信は、第2の制御バックボーン・インターフェース200C、セキュア・コンテンツ・インターフェース200D、デバッグ・インターフェース200E、又はテスト・インターフェース200Fを介して行われてもよい。これらのインターフェースの各々により、SI110が車載SoC104の他のコンポーネント160によって開始された通信を受信できる。前述のように、SI110がコクーン・モードか非分離モードかに関係なく、通信は障害インターフェース172(
図2を参照)を介して行われる。
【0038】
プロセッサ140が車載SoC104の他のコンポーネント160のうちの特定の1つと通信する必要がある場合は常に、プロセッサ140は、通信を試みる前に該特定のコンポーネントとの通信が安全であると判断する。この判断を行うために、ブロック304では、プロセッサ140はSI障害アグリゲータ142の内容をチェックすることができる。このSI障害アグリゲータ142は、SI110の外部にあるSoC障害アグリゲータ152から、障害インターフェース172(
図2を参照)を介して障害情報を受信する。前述のように、障害インターフェース172は、SoC障害アグリゲータ152から論理的に分離されていないが、各障害インターフェースは、SI電圧ドメインとSoC電圧ドメインとの間の電気的分離を提供する電圧レベル・シフタ240を通過するか又はそれらを含んでいてもよい。
【0039】
判断ブロック306では、プロセッサ140はSI障害アグリゲータ142で障害が検出されたかどうかを判定する。少なくとも1つの障害が検出される場合、つまり、他のコンポーネント160のうちの1つ又は複数について識別された障害が、SoC障害アグリゲータ152によってSI障害アグリゲータ142に報告される場合、判断ブロック306の判断は「はい」である。プロセッサ140は、SI障害アグリゲータ142内のステータス・ビット242を使用して障害を検出し得る。ステータス・ビット242は、車載SoC104の正常性を追跡することを特徴とする場合がある。或いは、SI障害アグリゲータ142はプロセッサ140に割り込みを送信することによって、プロセッサ140に障害を通知してもよい。それ以外の場合、障害が検出されないと、判断ブロック306の判断は「いいえ」である。
【0040】
判断ブロック306の判断が「はい」の場合、ブロック308では、プロセッサ140は1つ又は複数の訂正措置を行うことができる。訂正措置は、車両を安全な状態にするのに役立ち得る。非限定的な例として、このような訂正措置には、車両のブレーキをかけること、車両の減速、路肩への車両の経路指定などが含まれ得る。その後、プロセッサ140はブロック304に戻ってもよい。
【0041】
判断ブロック306の判断が「いいえ」の場合、ブロック310では、プロセッサ140は、特定のコンポーネントに接続されているインターフェース200のうちの特定のインターフェースの論理的分離制御部220のロック機構がロックされていた場合に、該特定のインターフェースのロック機構をロック解除する。つまり、プロセッサ140は、SI障害アグリゲータ142に障害が記憶されていない場合、特定のインターフェースを介して車載SoC104の特定のコンポーネントに安全にアクセスできると判定することができる。したがって、プロセッサ140は、ブロック310において、特定のインターフェースをロック解除する。
【0042】
次に、ブロック312では、プロセッサ140は、ロック解除された特定のインターフェースを介して特定のコンポーネントに通信を送ることができ、又は特定のコンポーネントから通信を受信できる。特定のインターフェースは、特定のインターフェースのアクセス・タイマ222を自動的に開始する。特定のインターフェースがロック解除されると、プロセッサ140は、車載SoC104への1つ又は複数の強く順序付けられたアクセス(一度に1つ)を開始することができる。アクセス・タイマ222は、アクセス毎に自動的に開始する。したがって、アクセス・タイマ222は、プロセッサ140によって特定のアクセスが開始されるとすぐにカウントダウンを開始することができる。
【0043】
判断ブロック314では、タイムアウトが発生したかどうかをプロセッサ140が判定する。アクセス・タイマ222が第1の所定の時間を超えて経過していて、特定のコンポーネントからの応答が受信されていないことを示す場合、判断ブロック314の判断は「はい」である。それ以外の場合、アクセス・タイマ222が第1の所定の時間を超えて経過したことを示す前に特定のコンポーネントから応答が受信されると、判断ブロック314の判断は「いいえ」である。
【0044】
判断ブロック314の判断が「はい」の場合、ブロック316では、プロセッサ140は安全障害が発生したことを示す。次に、ブロック318では、プロセッサ140は、特定のインターフェースの論理的分離制御部220のロック機構をロックする。任意選択で、ロック解除されている任意の他のインターフェースの論理的分離制御部220のロック機構をロックし、また、任意選択で、車載プラットフォーム100を安全な状態に戻すように構成されている1つ又は複数の措置を行う。
【0045】
一方、判断ブロック314の判断が「いいえ」の場合、ブロック320では、プロセッサ140は通信を完了する。アクセス・タイマ222は自動的にリセットされる。次に、ブロック318では、プロセッサ140は、特定のインターフェースのロック機構をロックする。したがって、方法300は、プロセッサ140が車載SoC104の他のコンポーネント160のうちの1つにアクセスしていない場合は常にインターフェース200がロックされたままにする。その後、方法300は終了する。
【0046】
SI110は、車載SoC104がブートされたときに、共有の不揮発性メモリ128から命令149(例えば、システムを安全な状態にするための重要な命令)を、その内部の揮発性メモリ146にコピーすることで、共有の不揮発性メモリ128へのアクセスを回避することができる。プロセッサ140は、SI110が、車両の運転サイクルを有効にするミッション・モードに入る前に命令149を認証及び検証することができる。SI110は、ミッション・モードと、コクーン・モード又は非分離モードのいずれかとで、同時に動作することができる。命令149は揮発性メモリ146に残る。これにより、プロセッサ140が共有の不揮発性メモリ128にアクセスすることを回避できる。例えば、アプリケーション・コード、フュージョン・データなどの重要でないデータは、SI110に含まれている内部のダイレクト・メモリ・アクセス(DMA:Direct Memory Access)エンジン402(
図4を参照)を使用して、共有の揮発性メモリ126から取得され得る。DMAエンジン402は、任意選択でプロセッサ140のコンポーネントであってもよい。DMAエンジン402の故障は、プロセッサ140に悪影響を及ぼすことはない。これは、共有の揮発性メモリ126から取得したデータをページングする間にDMAエンジン402が故障しても、プロセッサ140は揮発性メモリ146に記憶された命令149を実行し続けるためである。
【0047】
図4は、本開示のいくつかの実施例による、障害インターフェース172の図である。
図4を参照すると、車載SoC104の論理ブロックLB(1)~LB(N)は、それぞれ、関連付けられた第1の障害アグリゲータ260-1~260-Nであり得る。第1の障害アグリゲータ260-1~260-Nは、それぞれ論理ブロックLB(1)~LB(N)によって生成された障害を集約し、第1の集約された障害信号を車載SoC104の補助安全ユニット122に送信する。補助安全ユニット122は、第1の障害アグリゲータ260-1~260-Nから受信した第1の集約された障害信号を集約し、存在する場合は、任意選択の外部制御ユニット106(
図1を参照)に1つ又は複数の第2の集約された障害信号を送信する第2のSoC障害アグリゲータ152を実装する。任意選択の外部制御ユニット106に第2の集約された障害信号によって障害が通知されると、任意選択の外部制御ユニット106は、いくつかの可能な措置の中から1つ又は複数の措置を行うことができる。第一に、任意選択の外部制御ユニット106は障害をクリアすることができる。第二に、任意選択の外部制御ユニット106は訂正措置を行うことができる。第三に、任意選択の外部制御ユニット106は外部システム(例えば、1つ又は複数の外部マイクロコントローラ、1つ又は複数の外部エージェントなど)に通知することができる。ただし、前述のように、いくつかの実施例では任意選択の外部制御ユニット106は省略されてもよい。
【0048】
図1を参照すると、前述のように、SI110が車載SoC104の他のコンポーネント160から分離されている間に、SI110と車載SoC104の他のコンポーネント160との間で少なくとも一部の通信を有効にする必要がある。特に、車載SoC104の論理ブロックLB(1)~LB(N)で発生する障害は、障害インターフェース172を介してSI110に伝達されなければならない。このような通信を提供する1つの方法は、第1の障害アグリゲータ260-1~260-N(
図4を参照)に第1の集約された障害信号を直接SI110に送信させることである。そのためには、障害インターフェース172に、SI110と第1の障害アグリゲータ260-1~260-Nの各々との間の別個の伝送線又は信号導体が含まれている必要がある。これは、車載SoC104の他のコンポーネント160からSI110が分離されていることによって複雑になる。例えば、
図2を参照すると、電圧レベル・シフタ240に、信号導体毎に個別の電圧レベル・シフタを含める必要がある。さらに、SI110と車載SoC104の他のコンポーネント160との間の信号導体の数が多いほど、SI110は車載SoC104で発生する干渉に対してより脆弱になる。
【0049】
代わりに、
図4を参照して、SoC障害アグリゲータ152の各々を、次の3つの信号導体によってSI110に接続することができる:(1)訂正されたエラー信号導体410、(2)訂正されていないエラー信号導体412、及び(3)SoC障害アグリゲータ信号導体414。この配置により、障害インターフェース172は、論理ブロックLB(1)~LB(N)からの障害を、多すぎて電気的干渉を引き起こすほどに多くの導体を障害インターフェース172に含めることなく、且つ大きすぎて車載SoC104及び/又はSI110内の混雑を引き起こしてしまうほどに障害インターフェース172を大きくすることなく、SI110に報告することができる。信号導体410、412、及び414は、それぞれステータス・ビット「BT1」、「BT2」、及び「BT3」を設定できる。ステータス・ビットの各々は、設定された後、続いてプロセッサ140によってクリアされ得る。
【0050】
メールボックス156は、メールボックス割り込み信号導体416によってSI110の割り込みコントローラ141に接続され得る。信号導体410~416の各々は、ワイヤ、信号トレースなどとして実装され得る。
【0051】
図5Aは、本開示のいくつかの実施例による、SI110(
図1、
図2、
図4、
図8、及び
図10を参照)に障害を伝達する方法500を示すフロー図である。ここで、
図5Aを参照すると、本明細書に説明される方法500の各ブロックには、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組み合わせを使用して実行され得るコンピューティング・プロセスが含まれる。例えば、メモリに記憶された命令を実行するプロセッサ(例えば、
図1及び
図4に示すプロセッサ150)によって、様々な機能が実行され得る。方法500の少なくとも一部は、コンピュータ記憶媒体に記憶されたコンピュータ使用可能命令としても具体化され得る。方法500は、いくつか例を挙げると、スタンドアロン・アプリケーション、サービス又はホスト・サービス(スタンドアロン又は別のホスト・サービスとの組み合わせ)、又は別の製品へのプラグ・インによって提供され得る。また、方法500は、例として、
図1の車載プラットフォーム100に関して説明される。しかしながら、方法500は、加えて又は或いは、任意の1つのシステム、又は本明細書で説明するものを含むが、これらに限定されないシステムの任意の組み合わせによって実行され得る。
【0052】
説明を容易にするために、方法500は、SoC障害アグリゲータ152(
図1、
図2、及び
図4を参照)のうちの特定の1つによって実行されているものとして説明する。つまり、方法500はハードウェアによって実行され得る。
図5Aを参照すると、第1のブロック502において、特定のSoC障害アグリゲータは、第1の障害アグリゲータ260-1~260-N(
図2及び
図4を参照)の少なくとも一部分から第1の集約された障害信号を受信する。
【0053】
ブロック506では、特定のSoC障害アグリゲータは、訂正されたエラーによって引き起こされた障害を識別する第1の集約された障害信号を、訂正されたエラー信号に集約する。次に、ブロック508では、特定のSoC障害アグリゲータは、訂正されたエラー信号を、訂正されたエラー信号導体410(
図4を参照)を介してSI110(
図1、
図2、
図4、
図8、及び
図10を参照)に送信する。ブロック510では、特定のSoC障害アグリゲータは、訂正されたエラー毎に割り込みを割り込みコントロール154(
図1及び
図4を参照)に送る。割り込みコントローラ154は、割り込みを補助安全ユニット122(
図1及び
図4を参照)のプロセッサ150(
図1及び
図4を参照)に転送する。各割り込みは、割り込みに関連付けられた訂正されたエラーをプロセッサ150に通知する。
【0054】
ブロック512では、特定のSoC障害アグリゲータは、訂正されたエラー信号内に識別される第1の訂正されたエラーについて訂正されたエラー・タイマ420C(
図4を参照)を開始する。
【0055】
判断ブロック514では、特定のSoC障害アグリゲータは、第1の訂正されたエラーが特定のSoC障害アグリゲータからクリアされたかどうかを判定する。訂正されたエラー・タイマ420C(
図4を参照)が第2の所定の時間を超えて経過したことを示す前に第1の訂正されたエラーがクリアされている場合、判断ブロック514の判断は「はい」である。それ以外の場合、判断ブロック514の判断は「いいえ」である。判断ブロック514の判断が「はい」の場合、ブロック515では、特定のSoC障害アグリゲータは措置を行わない。一方、判断ブロック514の判断が「いいえ」の場合、特定のSoC障害アグリゲータは判断ブロック516に進む。
【0056】
判断ブロック516では、プロセッサ150は訂正されたエラー・タイマ420C(
図4を参照)が、第2の所定の時間を超えて経過したことを示すかどうか、つまり、訂正されたエラー・タイマ420Cがタイムアウトしたか又は期限切れになったかどうかを判定する。第2の所定の時間が経過している場合、判断ブロック516の判断は「はい」である。それ以外の場合、判断ブロック516の判断は「いいえ」である。判断ブロック516の判断が「はい」の場合、特定のSoC障害アグリゲータはブロック518に進む。それ以外の場合、判断ブロック516の判断が「いいえ」の場合、特定のSoC障害アグリゲータは判断ブロック514に戻り、第1の訂正されたエラーがプロセッサ150によってクリアされるのを待機する。したがって、特定のSoC障害アグリゲータは、第1の訂正されたエラーがクリアされたかどうか、及び訂正されたエラー・タイマ420Cが期限切れになったかどうかをモニタリングし続ける。訂正されたエラー・タイマ420Cが期限切れになる前に第1の訂正されたエラーがクリアされた場合、特定のSoC障害アグリゲータは、ブロック515で措置を行わない。一方、第1の訂正されたエラーがクリアされる前に訂正されたエラー・タイマ420Cが期限切れになる場合、特定のSoC障害アグリゲータはブロック518に進む。ブロック518では、特定のSoC障害アグリゲータは、SoC障害アグリゲータ信号を、SoC障害アグリゲータ信号同体414(
図4を参照)を介してSI110(
図1、
図2、
図4、
図8、及び
図10を参照)に送信する。
【0057】
ブロック520では、特定のSoC障害アグリゲータは、訂正されていないエラーによって引き起こされた障害を識別する、ブロック502で受信された第1の集約された障害信号を、訂正されていないエラー信号に集約する。次に、ブロック522では、特定のSoC障害アグリゲータは、訂正されていないエラー信号を、訂正されていないエラー信号導体412(
図4を参照)を介してSI110(
図1、
図2、
図4、
図8、及び
図10を参照)に送信する。ブロック524では、特定のSoC障害アグリゲータは、訂正されていないエラー毎に割り込みを割り込みコントロール154(
図1及び
図4を参照)に送る。割り込みコントローラ154は、割り込みを補助安全ユニット122(
図1及び
図4を参照)のプロセッサ150(
図1及び
図4を参照)に転送する。各割り込みは、割り込みに関連付けられた訂正されていないエラーをプロセッサ150に通知する。
【0058】
ブロック526では、特定のSoC障害アグリゲータは、訂正されていないエラー信号内に識別される第1の訂正されていないエラーについて訂正されていないエラー・タイマ420U(
図4を参照)を開始する。
【0059】
判断ブロック528では、特定のSoC障害アグリゲータは、第1の訂正されていないエラーが特定のSoC障害アグリゲータからクリアされたかどうかを判定する。訂正されていないエラー・タイマ420U(
図4を参照)が第3の所定の時間を超えて経過したことを示す前に第1の訂正されていないエラーがクリアされている場合、判断ブロック528の判断は「はい」である。それ以外の場合、判断ブロック528の判断は「いいえ」である。判断ブロック528の判断が「はい」の場合、ブロック529では、特定のSoC障害アグリゲータは措置を行わない。判断ブロック528の判断が「いいえ」の場合、特定のSoC障害アグリゲータは判断ブロック530に進む。
【0060】
判断ブロック530では、プロセッサ150は訂正されていないエラー・タイマ420Uが、第3の所定の時間を超えて経過したことを示すかどうか、つまり、訂正されていないエラー・タイマ420U(
図4を参照)がタイムアウトしたか又は期限切れになったかどうかを判定する。第3の所定の時間が経過している場合、判断ブロック530の判断は「はい」である。それ以外の場合、判断ブロック530の判断は「いいえ」である。判断ブロック530の判断が「はい」の場合、特定のSoC障害アグリゲータはブロック532に進む。一方、判断ブロック530の判断が「いいえ」の場合、特定のSoC障害アグリゲータは判断ブロック528に戻り、第1の訂正されていないエラーがプロセッサ150によってクリアされるのを待機する。したがって、特定のSoC障害アグリゲータは、第1の訂正されていないエラーがクリアされたかどうか、及び訂正されていないエラー・タイマ420Uが期限切れになったかどうかをモニタリングし続ける。訂正されていないエラー・タイマ420Uが期限切れになる前に第1の訂正されていないエラーがクリアされた場合、特定のSoC障害アグリゲータは、ブロック529で措置を行わない。一方、第1の訂正されていないエラーがクリアされる前に訂正されていないエラー・タイマ420Uが期限切れになる場合、特定のSoC障害アグリゲータはブロック532に進む。ブロック532では、特定のSoC障害アグリゲータは、SoC障害アグリゲータ信号を、SoC障害アグリゲータ信号同体414(
図4を参照)を介してSI110(
図1、
図2、
図4、
図8、及び
図10を参照)に送信する。この時点で、方法500は終了する。
【0061】
図5Bは、本開示のいくつかの実施例による、プロセッサ150(
図1及び
図4を参照)がSoC障害アグリゲータ152(
図1、
図2、及び
図4を参照)から受信した割り込みを処理するために使用し得る方法540を示すフロー図である。ここで、
図5Bを参照すると、本明細書に説明される方法540の各ブロックには、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組み合わせを使用して実行され得るコンピューティング・プロセスが含まれる。例えば、メモリに記憶された命令を実行するプロセッサ(例えば、プロセッサ150)によって、様々な機能が実行され得る。方法540の少なくとも一部は、コンピュータ記憶媒体に記憶されたコンピュータ使用可能命令としても具体化され得る。方法540は、いくつか例を挙げると、スタンドアロン・アプリケーション、サービス又はホスト・サービス(スタンドアロン又は別のホスト・サービスとの組み合わせ)、又は別の製品へのプラグ・インによって提供され得る。また、方法540は、例として、
図1の車載プラットフォーム100に関して説明される。しかしながら、方法540は、加えて又は或いは、任意の1つのシステム、又は本明細書で説明されているものを含むが、これらに限定されないシステムの任意の組み合わせによって実行され得る。
【0062】
説明を容易にするために、方法540はプロセッサ150(
図1及び
図4を参照)によって実行されているものとして説明する。
図5Bを参照すると、第1のブロック541において、プロセッサ150は、SoC障害アグリゲータ152のうちの特定のSoC障害アグリゲータから特定の割り込みを受信する。次に、ブロック542では、プロセッサ150は、特定の割り込み内に識別された1つ又は複数のエラーをトリアージし、エラーに対処するために1つ又は複数の訂正措置を行うことができる。
【0063】
プロセッサ150がエラーをトリアージしている及び/又は訂正措置を行っているときに問題が発生した場合、プロセッサ150は特定の割り込みの処理を続けることはできない場合がある。これが発生した場合、判断ブロック543の判断は「はい」であり、ブロック544において、プロセッサ150は特定の割り込みに関してさらなる措置を行わない。一方、プロセッサ150が特定の割り込みをトリアージすることができ、任意選択で、訂正措置を行うことができる場合、判断ブロック543の判断は「いいえ」である。判断ブロック543の判断が「いいえ」である場合、ブロック545では、プロセッサ150は特定の割り込みに関連する情報をメールボックス156に書き込み、プロセッサ140がこのメールボックス156を読み取ることができる。次に、ブロック546では、プロセッサ150は、メールボックス割り込みをメールボックス割り込み信号導体416を介して、割り込みコントローラ141に送信する。メールボックス割り込みは、ブロック541で受信された割り込み内で識別されたエラーのシビアリティを示す。
【0064】
次に、判断ブロック547において、プロセッサ150は、特定のSoC障害アグリゲータから、特定の割り込みの生成元の障害をプロセッサ150がクリアすべきかどうかを判定する。プロセッサ150が障害をクリアすると判断した場合、判断ブロック547の判断は「はい」である。それ以外の場合、判断ブロック547の判断は「いいえ」である。プロセッサ150によって行われた訂正措置がエラーに対処できたか、又は障害は訂正されたエラー(例えば、論理ブロックLB(1)~LB(N)のうちの1つによって訂正されたエラー)によって生成された場合、判断ブロック547の判断は「はい」であり得る。別の非限定的な例として、プロセッサ150が、プロセッサ140がエラーをクリアしたことを示すメールボックス割り込みをプロセッサ140から受信した場合、判断ブロック547の判断は「はい」であり得る。判断ブロック547の判断が「いいえ」である場合、ブロック548では、プロセッサ150は特定の割り込みに関してさらなる措置を行わない。一方、判断ブロック547の判断が「はい」の場合、ブロック549では、プロセッサ150は特定のSoC障害アグリゲータから障害をクリアする。プロセッサ150は、特定のSoC障害アグリゲータから障害がクリアされたことをプロセッサ140に通知することができる。その後、方法540は終了する。
【0065】
図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つのシステム、又は本明細書で説明されているものを含むが、これらに限定されないシステムの任意の組み合わせによって実行され得る。
【0066】
説明を容易にするために、方法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に訂正されたエラーを知らせる。
【0067】
判断ブロック556では、プロセッサ140(
図1、
図2、及び
図4を参照)は、メールボックス割り込み信号導体416を介してプロセッサ150(
図1及び
図4を参照)からメールボックス割り込みを受信したかどうかを判定する。メールボックス割り込みが受信されている場合、メールボックス割り込みは訂正されたエラーのシビアリティを示す。プロセッサ140がメールボックス割り込みを受信している場合、判断ブロック556の判断は「はい」である。それ以外の場合、判断ブロック556の判断は「いいえ」である。判断ブロック556の判断が「いいえ」である場合、ブロック558では、プロセッサ140はメールボックス割り込みか、又は、SoC障害アグリゲータ信号かのいずれかの受信を待機する。判断ブロック556の判断が「はい」の場合、プロセッサ140は判断ブロック560に進む。
【0068】
判断ブロック560では、プロセッサ140(
図1、
図2、及び
図4を参照)は、メールボックス156を読み取るかどうかを判断する。この判断は、メールボックス割り込みによってプロセッサ140に伝達された訂正されたエラーのシビアリティに少なくとも部分的に基づき得る。例えば、プロセッサ140は、訂正されたエラーのシビアリティが閾値(例えば、7)以上の場合にメールボックス156を読み取らないと判断し、訂正されたエラーのシビアリティが閾値を下回っている場合にメールボックス156を読み取ると判断することができる。判断ブロック560の判断が「はい」の場合、ブロック562では、プロセッサ140はメールボックス156を読み取る。次に、プロセッサ140はブロック564に進み、そこで、プロセッサ140は、例えば、ステータス・ビット「BT1」の設定を解除することによって、訂正されたエラーをクリアする。判断ブロック560の判断が「いいえ」の場合、プロセッサ140はブロック564に進み、例えば、ステータス・ビット「BT1」の設定を解除することによって、訂正されたエラーをクリアする。プロセッサ140がSI障害アグリゲータ142から訂正されたエラーをクリアする前に、プロセッサ140は、訂正されたエラーに対応する障害が特定のSoC障害アグリゲータからクリアされたというプロセッサ150からの通知を待機してもよい。しかしながら、エラーは訂正されているため、いくつかの実施例では、プロセッサ140は、このような通知を最初に受信することなく、訂正されたエラーを単にクリアしてもよい。
【0069】
SI障害アグリゲータ142が訂正されていないエラー信号導体412で訂正されていないエラー信号を受信すると、ブロック566では、SI障害アグリゲータ142はプロセッサ140の割り込みコントローラ141(
図1、
図2、及び
図4を参照)に割り込みを送る。この割り込みは、プロセッサ140に訂正されていないエラーを知らせる。
【0070】
判断ブロック568では、プロセッサ140(
図1、
図2、及び
図4を参照)は、メールボックス割り込み信号導体416を介してプロセッサ150(
図1及び
図4を参照)からメールボックス割り込みを受信したかどうかを判定する。メールボックス割り込みが受信されている場合、メールボックス割り込みは訂正されていないエラーのシビアリティを示す。プロセッサ140がメールボックス割り込みを受信している場合、判断ブロック568の判断は「はい」である。それ以外の場合、判断ブロック568の判断は「いいえ」である。判断ブロック568の判断が「いいえ」である場合、ブロック558では、プロセッサ140はメールボックス割り込みか、SoC障害アグリゲータ信号のいずれかの受信を待機する。判断ブロック568の判断が「はい」の場合、プロセッサ140は判断ブロック570に進む。
【0071】
判断ブロック570では、プロセッサ140(
図1、
図2、及び
図4を参照)は、メールボックス156を読み取るかどうかを判断する。この判断は、訂正されていないエラーのシビアリティに少なくとも部分的に基づき得る。例えば、プロセッサ140は、訂正されていないエラーのシビアリティが閾値(例えば、7)以上の場合にメールボックス156を読み取らないと判断し、訂正されたエラーのシビアリティが閾値を下回っている場合にメールボックス156を読み取ると判断することができる。判断ブロック570の判断が「はい」の場合、ブロック572では、プロセッサ140はメールボックス156を読み取る。その後、プロセッサ140はブロック573に進む。判断ブロック570の判断が「いいえ」の場合、プロセッサ140はブロック573に進む。
【0072】
判断ブロック573では、プロセッサ140は、1つ又は複数の訂正措置を行うかどうかを判断する。判断ブロック573の判断が「はい」である場合、ブロック574では、プロセッサ140は、車両のブレーキをかけるなどの訂正措置を行う。その後、プロセッサ140はブロック575に進む。
【0073】
判断ブロック573の判断が「いいえ」の場合、プロセッサ140は判断ブロック575に進む。判断ブロック575では、プロセッサ140は、外部システム404に通知するかどうかを判断する。判断ブロック575の判断が「はい」である場合、ブロック576では、プロセッサ140は外部システム404に通知し、ブロック578に進む。判断ブロック575の判断が「いいえ」の場合、プロセッサ140はブロック578に進む。
【0074】
ブロック578では、プロセッサ140は、メールボックス156にメールボックス割り込みを送る、及び/又は例えば、ステータス・ビット「BT2」の設定を解除することによって訂正されていないエラーをクリアする。任意選択で、プロセッサ140は、障害情報をメールボックス156に書き込むことができる。プロセッサ140がSI障害アグリゲータ142から訂正されていないエラーをクリアする前に、プロセッサ140は、訂正されていないエラーに対応する障害が特定のSoC障害アグリゲータからクリアされたというプロセッサ150からの通知を待機してもよい。その後、方法550は終了する。メールボックス割り込みは、プロセッサ150によって受信され、プロセッサ150が訂正されていないエラーに対応する障害をクリアするべきかどうかを判断する際に、判断ブロック547(
図5Bを参照)で使用され得る。プロセッサ150は、任意選択で、この判断をする前に、プロセッサ140によって、メールボックス156に書き込まれた障害情報を読み取ることができる。
【0075】
図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つのシステム、又は本明細書で説明されているものを含むが、これらに限定されないシステムの任意の組み合わせによって実行され得る。
【0076】
説明を容易にするために、方法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障害アグリゲータ信号を受信する。
【0077】
図5Dに破線の矢印で示すように、SI障害アグリゲータ142(
図1、
図2、及び
図4を参照)がSoC障害アグリゲータ信号を受信すると、SI110のSoCエラー処理回路422(
図4を参照)は、自動的にブロック584に進み、SoCエラーを含むSoCエラー信号を外部システム404(
図4を参照)に接続406(
図4を参照)経由で自動的に送信することができる。或いは、SoCエラー処理回路422は、ブロック586に進み、SoC障害タイマ424(
図4を参照)を開始することもできる。SoC障害タイマ424は、SoC障害アグリゲータ信号が受信されるときと外部システム404が通知されるときとの間に遅延を発生させることがある。SoC障害タイマ424が実行している最中に、プロセッサ140は1つ又は複数の訂正措置を行うことができる。訂正措置が成功した場合、プロセッサ140はステータス・ビット「BT2」の設定を解除することによって訂正されていないエラーをクリアし、ステータス・ビット「BT3」の設定を解除することによってSoC障害アグリゲータ・エラーをクリアすることができる。SoC障害アグリゲータ・エラーをクリアすると、SoC障害タイマ424が停止する。プロセッサ140がSI障害アグリゲータ142から訂正されていないエラーをクリアする前に、プロセッサ140は、訂正されていないエラーに対応する障害が特定のSoC障害アグリゲータからクリアされたというプロセッサ150からの通知を待機してもよい。
【0078】
SoC障害タイマ424が開始された後、判断ブロック588では、SoCエラー処理回路422は、SoC障害タイマ424が第4の所定の時間を超えて経過したことを示すかどうかを判断する。SoC障害タイマ424が、第4の所定の時間を超えて経過していて、SoC障害アグリゲータ・エラーがクリアされていないことを示す場合、判断ブロック588の判断は「はい」である。一方、SoC障害タイマ424が第4の所定の時間が超えて経過したことを示す前に、SoC障害アグリゲータ・エラーがクリアされると、判断ブロック588の判断は「いいえ」である。
【0079】
判断ブロック588の判断が「いいえ」の場合、ブロック590では、SoCエラー処理回路422は、第4の所定の時間を超えて経過したことをSoC障害タイマ424が示すのを待機する。一方、ブロック588の判断が「はい」の場合、ブロック584では、SoCエラー処理回路422は、接続406(
図4を参照)経由で、第1の訂正されていないエラーがクリアされておらず、SoC障害アグリゲータ・エラーがアサートされていることを示す、SoCエラーを含むSoCエラー信号を外部システム404(
図4を参照)に送信する。SoC障害タイマ424は、SoCエラーが送られると自動的に停止する及び/又はリセットされる。或いは、SoCエラー処理回路422がSoC障害タイマ424をリセットする場合があり、また、SoC障害タイマ424が、SoCエラー処理回路422が何の措置も行わないで、単に期限切れになる場合もある。
【0080】
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は訂正措置を行う。
【0081】
次に、ブロック598では、プロセッサ140は、メールボックス156にメールボックス割り込みを送る、及び/又は例えば、ステータス・ビット「BT3」の設定を解除することによってSoC障害アグリゲータ・エラーをクリアし、ステータス・ビット「BT2」の設定を解除することによって訂正されていないエラーをクリアする。SoC障害アグリゲータ・エラーをクリアすると、SoC障害タイマ424が停止する。メールボックス156に送られたメールボックス割り込みは、訂正されていないエラーがクリアされたこと、及び/又はプロセッサ140がブロック597で訂正措置を行ったことを示し得る。任意選択で、プロセッサ140は、障害情報をメールボックス156に書き込むことができる。プロセッサ140がSI障害アグリゲータ142からSoC障害アグリゲータ・エラー及び訂正されていないエラーをクリアする前に、プロセッサ140は、訂正されていないエラーに対応する障害が特定のSoC障害アグリゲータからクリアされたというプロセッサ150からの通知を待機してもよい。その後、方法580は終了する。メールボックス割り込みはプロセッサ150によって受信され、プロセッサ150は、訂正されていないエラーに対応する障害をクリアすることができる。プロセッサ150は、任意選択で、障害をクリアする前にプロセッサ140によってメールボックス156に書き込まれた障害情報を読み取ることができる。
【0082】
図5A~
図5Dでは、車載SoC104にはプロセッサ150が含まれている。少なくともいくつかの実施例では、プロセッサ150は省略されてもよい。このような実施例では、方法540は実行されない。各障害について、特定のSoC障害アグリゲータがSoC障害アグリゲータ・エラーを生成してSI障害アグリゲータ142に送る(ブロック518及びブロック532)。プロセッサ150が存在しないため、メールボックス割り込みは、割り込みコントローラ141に送信されず、したがって、プロセッサ140はプロセッサ140が動作する前にSoC障害アグリゲータ信号を待機する(
図5Cのブロック558)。次に、SoC障害アグリゲータ・エラーが受信される(
図5Dのブロック582)と、SI110は、方法550(
図5Cを参照)で受信された訂正されたエラー及び訂正されていないエラー毎にトリアージを行う(
図5Dのブロック594)ために、他のコンポーネント160に進出する。トリアージが成功した場合、プロセッサ140は訂正措置を行う(
図5Dのブロック597)。一方、トリアージに失敗した場合、プロセッサ140は措置を行わない(
図5Dのブロック596)。これにより、SoC障害タイマ424の期限が切れた後、SoCエラー処理回路422は(ソフトウェアの介入なしで)SoCエラーを送る(
図5Dのブロック584)。SoCエラーは、外部システム404(例えば、任意選択の外部制御ユニット106、1つ又は複数の外部マイクロコントローラ、1つ又は複数の外部エージェントなど)に通知し、外部システム404が車載プラットフォーム100(
図1を参照)を安全な状態に戻すことを可能にする。
【0083】
図6A~
図6Cは、SI110が訂正されたエラー信号、訂正されていないエラー信号、又はSoC障害アグリゲータ信号のうちの少なくとも1つによって特定の障害を通知された場合に、SI110が行い得る措置の例を示している。
図6Aは、本開示のいくつかの実施例による、シビアリティの低い訂正されていないエラー(例えば、最小値)がアサートされた後に、プロセッサ140によって送受信される信号の信号タイミング図の例を示している。
図6Aの線612A~618Aは、それぞれ、訂正されていないエラー信号、メールボックス割り込み信号、SoC障害アグリゲーション信号、及びSoCエラー信号を表している。訂正されていないエラー信号、メールボックス割り込み信号、SoC障害アグリゲーション信号、及びSoCエラー信号は、線610Aで表されるクロック信号と同期されている。線610Aで表されるクロック信号は、SIドメイン内の第2の(SI)クロック114(
図1を参照)に基づいて生成されている。
【0084】
線612Aは、訂正されていないエラー信号導体412(
図4を参照)によってSI障害アグリゲータ142に導かれた訂正されていないエラー信号を表す。線612Aの一部分622Aは、訂正されていないエラーのアサートを表す。訂正されていないエラー信号を受信した後(例えば、
図5Cのブロック552)、SI障害アグリゲータ142はプロセッサ140に割り込みを送る(例えば、
図5Cのブロック566)。
【0085】
次に、
図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)。
【0086】
一方、メールボックス156の内容が、プロセッサ150が特定の障害をクリアしたことを示していない場合、プロセッサ140は1つ又は複数の訂正措置を行うことを判断し得る(例えば、
図5Cの判断ブロック573の判断が「はい」である)。(例えば、
図5Cのブロック574で行われた)訂正措置が成功した場合、プロセッサ140はプロセッサ150にエラーをディアサートする(又は障害をクリアする)ように通知し得る。例えば、プロセッサ140はプロセッサ150にメールボックス割り込みを送るか、及び/又はメールボックス156に障害情報を書き込むことができる。プロセッサ150がこの通知を受信してエラーをディアサートした後、プロセッサ150はプロセッサ140にエラーがディアサートされたことを(例えば、訂正されていないエラー信号、メールボックス割り込み、及び/又はメールボックス156に記憶されている障害情報を介して)通知する。この通知を受信した後、プロセッサ140は、例えば、ステータス・ビット「BT2」の設定を解除することによってエラーをクリアすることができる(例えば、
図5Cのブロック578)。線612Aの一部分624Aは、プロセッサ140がメールボックス156を読み取り、訂正措置を行った後の訂正されていないエラーのディアサートを表す。曲線矢印628Aは、プロセッサ140がメールボックス割り込みを受信したときと、プロセッサ140がエラーをディアサートした(又は障害をクリアした)ときとの間の遅延を表す。
【0087】
訂正措置が成功すると、プロセッサ140はメールボックス156に、プロセッサ140が特定の障害をクリアしたことを示すメールボックス割り込みを送ることができる(例えば、
図5Cのブロック578)。任意選択で、プロセッサ140は、障害情報をメールボックス156に書き込むことができる。プロセッサ150はメールボックス割り込みを受信し、特定の障害がプロセッサ140によって訂正されたと判定し(例えば、判断ブロック547の判断が「はい」である)、SoC障害アグリゲータ152から特定の障害をクリアする(例えば、
図5Bのブロック549)。訂正されていないエラー・タイマ420Uが期限切れになる前にこれが起きた場合、SoC障害アグリゲータ152はSoC障害アグリゲータ・エラーをアサートしない(例えば、
図5Aのブロック529)。したがって、SoC障害アグリゲータ152は、特定の障害をモニタリングして、プロセッサ140及び150のうちの1つによって処理したことを確実にし、訂正されていないエラー・タイマ420Uが期限切れになる前に特定の障害がクリアされていないときは、SoC障害アグリゲータ152は、SoCエラー処理回路422に通知する。前述のように、プロセッサ150がエラーをディアサートした後、プロセッサ150はプロセッサ140にエラーがディアサートされたことを(例えば、訂正されていないエラー信号、メールボックス割り込み、及び/又はメールボックス156に記憶されている障害情報を介して)通知し、プロセッサ140はSI障害アグリゲータ142内のエラーをクリアすることができる。
【0088】
線616AはSoC障害アグリゲーション信号を表し、SoC障害アグリゲーション・エラーがアサートされなかったことを示す。したがって、訂正されていないエラー・タイマ420Uが期限切れになる前に、訂正されていない障害がクリアされた。
【0089】
線618Aは、接続406経由で外部システム404(例えば、任意選択の外部制御ユニット106、1つ又は複数の外部マイクロコントローラ、1つ又は複数の外部エージェントなど)に送られ得るSoCエラー信号を表す。訂正されていないエラーは処理され、SoC障害アグリゲーション・エラーがアサートされなかったため、線618AはSI110が訂正されていないエラーを外部システム404に通知しないことを示す(例えば、判断ブロック575の判断が「いいえ」である)。
【0090】
図6Bは、本開示のいくつかの実施例による、シビアリティの高い訂正されていないエラー(例えば、最大値)がアサートされた後に、プロセッサ140によって送受信される信号の信号タイミング図の例を示している。
図6Bの線612B~618Bは、それぞれ、訂正されていないエラー信号、メールボックス割り込み信号、SoC障害アグリゲーション信号、及びSoCエラー信号を表している。訂正されていないエラー信号、メールボックス割り込み信号、SoC障害アグリゲーション信号、及びSoCエラー信号は、線610Bで表されるクロック信号と同期されている。線610Bで表されるクロック信号は、SIドメイン内の第2の(SI)クロック114(
図1を参照)に基づいて生成されている。
【0091】
線612Bは、訂正されていないエラー信号導体412(
図4を参照)によってSI障害アグリゲータ142に導かれた訂正されていないエラー信号を表す。線612Bの一部分622Bは、訂正されていないエラーのアサートを表す。訂正されていないエラー信号を受信した後(例えば、
図5Cのブロック552)、SI障害アグリゲータ142はプロセッサ140に割り込みを送る(例えば、
図5Cのブロック566)。
【0092】
次に、
図6Bでは、割り込みコントローラ141がメールボックス割り込みを受信する(例えば、
図5Cの判断ブロック568の判断が「はい」である)。線614Bの一部分624Bは、メールボックス割り込みを表し、これは、第1の訂正されていないエラーが高いシビアリティ(例えば、7)を有することを示す。メールボックス割り込みは、特定の障害のシビアリティが高いことを示しているため、プロセッサ140はメールボックス156にアクセスしないと判断する(例えば、
図5Cの判断ブロック570の判断が「いいえ」である)。例えば、プロセッサ140は、車載SoC104の他のコンポーネント160にアクセスするのは危険すぎて、それを行うとSI110に悪影響を及ぼす可能性があると判定することがある。
図6Bでは、プロセッサ140はまた、1つ又は複数の訂正措置を行わないと判断する(例えば、
図5Cの判断ブロック573の判断が「いいえ」である)。
図6Bでは、SI110が1つ又は複数の訂正措置を行うことができないため、訂正されていないエラーはディアサートされていない。
【0093】
しかしながら、プロセッサ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に通知することを判断する。
【0094】
図6Cは、本開示のいくつかの実施例による、訂正されていないエラー(例えば、最大値)がアサートされた後であるが、SI110はメールボックス割り込みを受信していない、プロセッサ140によって送受信される信号の信号タイミング図の例を示す。
図6Cの線612C~618Cは、それぞれ、訂正されていないエラー信号、メールボックス割り込み信号、SoC障害アグリゲーション信号、及びSoCエラー信号を表している。訂正されていないエラー信号、メールボックス割り込み信号、SoC障害アグリゲーション信号、及びSoCエラー信号は、線610Cで表されるクロック信号と同期されている。線610Cで表されるクロック信号は、SIドメイン内の第2の(SI)クロック114(
図1を参照)に基づいて生成されている。
【0095】
線612Cは、訂正されていないエラー信号導体412(
図4を参照)によってSI障害アグリゲータ142に導かれた訂正されていないエラー信号を表す。線612Cの一部分622Cは、訂正されていないエラーのアサートを表す。訂正されていないエラー信号を受信した後(例えば、
図5Cのブロック552)、SI障害アグリゲータ142はプロセッサ140に割り込みを送る(例えば、
図5Cのブロック566)。
【0096】
図6Cでは、線614Cはメールボックス割り込みを受信したことを示していない。したがって、この例では、割り込みコントローラ141はメールボックス割り込みを受信しない(例えば、
図5Cの判断ブロック568の判断が「いいえ」である)。これは、例えば、プロセッサ150が訂正されていないエラーのトリアージを完了できず(例えば、
図5Bのブロック542)、プロセッサ150がメールボックス割り込みを送ることができない(
図5Cの判断ブロック543の判断が「はい」である)場合に起こる可能性がある(例えば、
図5Bのブロック544)。したがって、プロセッサ140は、メールボックス割り込み又はSoC障害アグリゲータ・エラーのいずれかを、いずれか最初に発生したものを受信するのを待機する(例えば、
図5Cのブロック558)。
【0097】
線628Cは、第3の所定の時間を表し、訂正されていないエラー・タイマ420Uが期限切れになったことを示す。プロセッサ140もプロセッサ150も第1の訂正されていないエラーをクリアできなかったため、訂正されていないエラー・タイマ420Uは期限切れになることができる(例えば、
図5Aの判断ブロック530の判断は「はい」である)。これにより、訂正されていないエラー信号をSI110に送り、割り込みをプロセッサ150に送ったSoC障害アグリゲータ152のうちの特定の1つが、SoC障害アグリゲータ信号をSoC障害アグリゲータ信号導体414を介してSI障害アグリゲータ142に送信する(例えば、
図5Aのブロック532)。SI障害アグリゲータ142は、SoC障害アグリゲータ信号を受信する(例えば、
図5Dのブロック582)。線616Cの一部分624Cは、特定のSoC障害アグリゲータによってSI110に送られるSI障害アグリゲータ・エラーを表す。曲線矢印630Cは、SI110が訂正されていないエラーを受信したときと、SI110がSI障害アグリゲータ・エラーを受信したときとの間の遅延を表す。
【0098】
SI障害アグリゲータ信号を受信した後(例えば、
図5Dのブロック582)、SI障害アグリゲータ142はプロセッサ140に割り込みを送る(例えば、
図5Dのブロック592)。次に、プロセッサ140は、第1の訂正されていないエラーをトリアージして(例えば、
図5Dのブロック594)、訂正措置を行うかどうかを判断することができる。プロセッサ140が訂正措置を行うことができない場合(例えば、
図5Dの判断ブロック595の判断が「いいえ」である)、SoCエラー処理回路422はSoCエラー信号を外部システム404に送る(例えば、
図5Cのブロック584)。線612Cの一部分626Cは、外部システム404に送られたSoCエラーを表す。SoC障害タイマ424を使用する実施例では、SoC障害タイマ424が期限切れになるとSoCエラーが送られる。
図6Cでは、線632Cは、第4の所定の時間を超えて経過したことを示している。これは、SoC障害タイマ424の期限が切れたことを意味する。曲線矢印634Cは、SI110がSI障害アグリゲータ・エラーを受信したときと、SI110がSoCエラーをアサートしたときとの間の遅延を表す。したがって、SI110内のハードウェアは外部システム404に通知し、外部システム404は、車載プラットフォーム100を安全な状態に戻すことを試みる。
【0099】
図2を参照すると、前述のように、SI110と車載SoC104の他のコンポーネント160とは、揮発性メモリ126を共有している。しかし、SI110は第1のリスク分類レベル内で動作し、車載SoC104の他のコンポーネント160は、より低い第2のリスク分類レベル内で動作する可能性がある。例えば、SI110はASIL-Dで動作するが、揮発性メモリ126及びSI110と揮発性メモリ126との間の通信パス(例えば、インターコネクト、メモリ・コントローラなど)を含む車載SoCの他のコンポーネントはASIL-Bで動作する場合がある。
【0100】
SI110が揮発性メモリ126を車載SoC104の他のコンポーネント160と共有できるようにするために、SI110による排他的な使用のために、別個の専用メモリ領域(「カーブアウト部」250と呼ばれる)が揮発性メモリ126に作成される。カーブアウト部250は、メインCPUコンプレックス120(
図1を参照)によって実行されるメモリ管理ソフトウェア(例えば、リッチOSメモリ管理リッチOSメモリ管理ソフトウェア)からは見えない場合がある。カーブアウト部250は、ブート時に作成及び構成することができ、所与のブート・サイクルの間、SI110専用のままにしておくことができる。例えば、カーブアウト部250のサイズは、カーブアウト部250を構成するために(例えば、メインCPUコンプレックス120によって実行される)ソフトウェアによって使用される、ユーザが編集可能なソフトウェア・パラメータによって判断することができる。カーブアウト部250は、第1のサブセクション252(
図8を参照)と第2のサブセクション254(
図8を参照)とに分けることができる。SI110は、第1のリスク分類レベルで動作する通信パスを介してカーブアウト部250にアクセスでき、その通信パスを介したSI110によるカーブアウト部250への任意のアクセスは、以下に説明するようなセキュリティ許可チェックを受けることになり得る。
【0101】
SI110にはエラー検出ブロック272が含まれている。このブロックには、SI110の他のコンポーネントとカーブアウト部250との間に配置されたハードウェアが含まれている。したがって、エラー検出ブロック272は揮発性メモリ・インターフェース200Aのコンポーネントとして実装され得る。或いは、エラー検出ブロック272は、プロセッサ140と揮発性メモリ・インターフェース200Aとの間に配置されてもよい。このような実施例では、1つ又は複数の信号導体(例えば、ワイヤ、信号トレースなど)がエラー検出ブロック272を、プロセッサ140及び揮発性メモリ・インターフェース200Aの各々に接続することができる。
【0102】
エラー検出ブロック272のハードウェアには、コード生成サブブロック273(
図8を参照)が含まれている場合がある。コード生成サブブロック273は、周期的冗長検査(CRC:Cyclic Redundancy Check)コードを生成するCRCコード生成回路を使用して実装され得る。或いは、エラー検出ブロック272には、エラー訂正コード(ECC:Error Correction Code)など、異なるタイプのエラー検出コードを生成する他のタイプのコード生成回路が含まれていてもよい。エラー検出ブロック272のハードウェアは、エラー検出ブロック272を通過するデータに対して1つ又は複数のエラー検出コード(例えば、CRCコード)を判断する。例えば、エラー検出ブロック272は、エラー検出ブロック272を通過するデータの各バイト毎に別個のエラー検出コードを判断し得る。エラー検出コードは、バイトと、バイトが記憶されるカーブアウト部250のデータ・アドレスとに基づいて計算され得る。例えば、以下の式1を使用して、カーブアウト部250に書き込まれるデータの特定のバイトのエラー検出コードを判断することができる:
crc_out
Byte x=CRC(Byte Address,Byte Data) 式1
【0103】
上記の式1では、変数「crc_out
Byte x」は、変数「Byte Data」によって表されるバイトと、変数「Byte Address」によって表されるデータ・アドレスとに基づいて計算されるエラー検出コードを表す。式1では、関数「CRC」は、変数「Byte Data」及び「Byte Address」の値を入力として使用し、変数「crc_out
Byte x」の値を出力する。関数「CRC」の出力は、存在する場合、コード生成サブブロック273(
図8を参照)によって少なくとも部分的に計算され得る。
【0104】
エラー検出コードが判断された後、エラー検出ブロック272は、エラー検出コードのコード・アドレスを(例えば、オフセットを使用して)判断する。例えば、以下の式2を使用して、カーブアウト部250に書き込まれるデータの特定のバイトのエラー検出コードを判断することができる:
crc_out_address=write_address+fixed_offset 式2
【0105】
上記の式2では、変数「crc_out_address」は、バイトの変数「write_address」によって表されるデータ・アドレスと、変数「fixed_offset」によって表されるオフセットとに基づいて計算されるコード・アドレスを表す。前述のように、カーブアウト部250はサブセクションに分けることができ、第1のサブセクション252(
図8を参照)はデータを記憶し、第2のサブセクション254(
図8を参照)はエラー検出コードを記憶する。したがって、上記の式1の変数「Byte Address」によって表されるデータ・アドレスは、第1のサブセクション252に置くことができ、上記の式2の変数「write_address」によって表されるコード・アドレスは、第2のサブセクション254に置くことができる。このような実施例では、変数「fixed_offset」の値は、エラー検出コードが第2のサブセクション254に確実に記憶されるように、カーブアウト部250の第1のサブセクション252のサイズと同じになり得る。このようにして、アドレス・ベースの分離を使用してエラー検出コードからデータを分離し、これにより、第1のサブセクション252及び第2のサブセクション254のうちの一方で発生する障害が他方のサブセクションに影響を与えないようにする。
【0106】
エラー検出ブロック272は、データ・アドレス内へのデータの記憶とコード・アドレス内へのエラー検出コードの記憶との間に遅延(例えば、数クロック・サイクル)を発生させる。この遅延により、データに悪影響を与えるイベント(例えば、一時的イベント)がエラー検出コードにも悪影響を及ぼす可能性が低減する。つまり、遅延は共通原因故障や一時的故障からの耐性を提供するのに役立ち、これは、クロック・グリッチなどの問題からの保護を提供するのに役立つ。エラー検出ブロック272は、2バイト以上のデータとそれに対応するエラー検出コードをバッファしてから、それらをカーブアウト部250に記憶することができる。そして、エラー検出ブロック272は、第1のサブセクション252にデータのバイト(例えば、16バイト)を記憶することができ、その後に遅延が続く。次に、エラー検出ブロック272は、第2のサブセクション254に、対応するエラー検出コード(例えば、16バイト)を記憶することができる。
【0107】
ここで、
図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つのシステム、又は本明細書で説明されているものを含むが、これらに限定されないシステムの任意の組み合わせによって実行され得る。
【0108】
図7は、本開示のいくつかの実施例による、カーブアウト部250(
図2、
図8、及び
図10を参照)にデータを書き込む方法700を示すフロー図である。説明を容易にするために、方法700はエラー検出ブロック272(
図2、
図8、及び
図10を参照)によって実行されているものとして説明する。方法700が開始される前に、SIドメインで動作するイニシエータ(例えば、プロセッサ140、DMAエンジン402など)が、データ及びデータ・アドレスを含む第1の書き込み命令をエラー検出ブロック272に転送する。イニシエータは、所定のサイズ(例えば、16バイト)のデータをカーブアウト部250に書き込むことができる。
【0109】
図7を参照すると、第1のブロック702において、エラー検出ブロック272(
図2、
図8、及び
図10を参照)は、イニシエータからデータ及びデータ・アドレスを含む第1の書き込み命令を受信する。ブロック704では、エラー検出ブロック272は、データの一部分と、その部分に対応するデータ・アドレスのうちの1つとを選択する。非限定的な例として、エラー検出ブロック272は、ブロック704において、データのバイトと、選択したバイトに対応するデータ・アドレスとを選択することができる。いくつかの実施例では、第1の書き込み命令には単一のデータ・アドレス(例えば、第1のアドレス)しか含まれていない場合がある。後続のデータ・アドレスは、その単一のアドレスに基づいて(例えば、所定のデータ・サイズを単一のデータ・アドレスに追加することによって)判断され得る。したがって、いくつかの実施例では、データ・アドレスは、データの少なくとも一部については、ブロック704において計算される場合がある。
【0110】
次に、ブロック706では、エラー検出ブロック272は、ブロック704において選択されたデータの一部分のエラー検出コードを(例えば、上記の式1を使用して)判断する。次に、ブロック708では、エラー検出ブロック272は、ブロック704において選択されたデータの一部分と対応するデータ・アドレスとを含む第1の書き込み命令を、カーブアウト部250(
図2、
図8、及び
図10を参照)の第1のサブセクション252(
図8及び
図10を参照)に転送する。第1の書き込み命令に従って、カーブアウト部250は、第1のサブセクション252の対応するデータ・アドレスに一部分を記憶する。
【0111】
次のブロック710では、エラー検出ブロック272(
図2、
図8、及び
図10を参照)は、ブロック706において(例えば、上記の式2を使用して)判断されたエラー検出コードのコード・アドレスを判断する。ブロック712では、エラー検出ブロック272は、エラー検出コードをカーブアウト部250(
図2、
図8、及び
図10を参照)の第1のサブセクション252(
図8及び
図10を参照)宛てに、コード・アドレスに記憶するために送るのを、待機する(例えば、数クロック・サイクル)。したがって、ブロック712では、エラー検出ブロック272は、データ・アドレス内へのデータの記憶とコード・アドレス内へのエラー検出コードの記憶との間に遅延を発生させる。エラー検出ブロック272には、ブロック712においてエラー検出ブロック272が待機する時間を判断するために使用される書き込み遅延タイマ(図示せず)が含まれていてもよい。したがって、エラー検出ブロック272は、コード・アドレス内への記憶のためにエラー検出コードをカーブアウト部250に送る前に、第5の所定の時間だけ待機することがある。次に、ブロック714では、エラー検出ブロック272は、ブロック706において判断されたエラー検出コードとブロック710において判断されたコード・アドレスとを含む第2の書き込み命令を、カーブアウト部250(
図2、
図8、及び
図10を参照)の第2のサブセクション254(
図8及び
図10を参照)に転送する。したがって、データを記憶するために、エラー検出ブロック272は、ブロック708及びブロック714においてそれぞれ1回ずつで、2回カーブアウト部250にアクセスする。第2の書き込み命令に従って、カーブアウト部250は、第2のサブセクション254のコード・アドレスにエラー検出コードを記憶する。
【0112】
次に、判断ブロック716では、エラー検出ブロック272(
図2、
図8、及び
図10を参照)は、記憶されていないデータがないかどうかを判定する。エラー検出ブロック272が、データの少なくとも一部が記憶されていないと判定した場合、判断ブロック716の判断は「はい」である。それ以外の場合、判断ブロック516の判断は「いいえ」である。判断ブロック716の判断が「はい」の場合、エラー検出ブロック272はブロック704に戻り、データの新しい部分を選択する。一方、判断ブロック716の判断が「いいえ」の場合、エラー検出ブロック272はブロック702に戻り、新しいデータ及び新しいデータ・アドレスを受信する。
【0113】
前述のように、エラー検出ブロック272は、2バイト以上のデータとそれに対応するエラー検出コードをバッファしてから、それらをカーブアウト部250に記憶することができる。例えば、ブロック706~714の各々は、データの複数のブロック(例えば、ブロック704において選択される)に対して実行することができる。非限定的な例として、エラー検出ブロック272は、2バイト以上のデータに対してブロック706を実行してから、ブロック708において、第1の書き込み命令をカーブアウト部250に、データのバイトとそれに対応するデータ・アドレスとともに送ることができる。例えば、エラー検出ブロック272は、第1のデータ・アドレスとともにデータのバイトを第1のサブセクション252に送ることができる。第1のサブセクション252は、第1のデータ・アドレスから始まる連続したメモリ・アドレスにデータのバイトを書き込むことができる。次に、ブロック710では、エラー検出ブロック272は、ブロック706において判断された2つ以上のエラー検出コードのコード・アドレスを判断することができる。ブロック712では、エラー検出ブロック272は、データのバイトの書き込みとカーブアウト部250へのエラー検出コードの書き込みとの間に遅延を発生させる。次に、ブロック714では、エラー検出ブロック272は、エラー検出コードとコード・アドレスとを含む第2の書き込み命令を第2のサブセクション254に転送する。第2のサブセクション254は、コード・アドレスにエラーコード検出コードを書き込む。実装例の詳細に応じて、第2の書き込み命令には第1のコード・アドレスしか含まれていない場合があり、第2のサブセクション254は第1のコード・アドレスから始まる連続したメモリ・アドレスにエラー検出コードを書き込むことができる。
【0114】
図8は、方法700(
図7を参照)を実行するエラー検出ブロック272の一例を示している。SI110には、プロセッサ140、DMAエンジン402など、各々SIドメイン内で動作する1つ又は複数のイニシエータ800が含まれ得る。
図8では、イニシエータ800にはイニシエータ802(例えば、プロセッサ140)が含まれている。イニシエータ802(例えば、プロセッサ140)は、所定のサイズ(例えば、16バイト)のデータをカーブアウト部250に書き込むことができる。
図8に示す例では、イニシエータ802は、16バイトのデータと第1のデータ・アドレスとをエラー検出ブロック272に送る。データは、
図8では、「wdata_in[127:0]」という名前の128ビットの配列によって記憶又は表現され、第1のデータ・アドレスは、
図8では、「Address_0[39:0]」という名前の40ビットの配列によって記憶又は表現されている。しかしながら、実装例の詳細によっては、データは他のサイズを有していてもよく、128ビットは非限定的な例として提供されている。同様に、第1のデータ・アドレスも他のサイズを有していてもよく、40ビットは非限定的な例として提供されている。データの第1のバイトは、第1のデータ・アドレスに記憶され、次のデータ・アドレスは、第1のデータ・アドレスに1バイトを追加することによってデータの第2のバイトについて識別され、以下同様であり得る。
図8は、イニシエータ802が安全アイランド・インターコネクト808を介して、信号806で第1の書き込み命令804をエラー検出ブロック272に送っていることを示している。前述のように、第1の書き込み命令804にはデータと第1のデータ・アドレスとが含まれている。安全アイランド・インターコネクト808は、バスなどとして実装され得る。
【0115】
安全アイランド・インターコネクト808は、第1の書き込み命令804をエラー検出ブロック272に供給する(例えば、
図7のブロック702)。図示する実施例では、安全アイランド・インターコネクト808は、第1の書き込み命令804を信号810-0~810-15で供給する。各信号には、データのバイト及び第1のデータ・アドレスのうちの1つが含まれている。この実施例では、エラー検出ブロック272は、データの各バイトのエラー検出コードを生成し、生成されるエラー検出コードはCRCコードである。エラー検出ブロック272は、バイトが信号810-0~810-15で受信されるとバイトの処理を開始することができる(例えば、
図7のブロック704)。
【0116】
次に、コード生成サブブロック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にルーティングされる。
【0117】
エラー検出ブロック272は、第1の時間(例えば、
図8では「Time=T0」と識別されている)に、(例えば、信号812-0~812-15内の)データ及び第1のデータ・アドレスを、揮発性メモリ・インターフェース200A(
図2を参照)を介して、カーブアウト部250の第1のサブセクション252に送る。つまり、エラー検出ブロック272は、第1の書き込み命令をカーブアウト部250の第1のサブセクション252に送る(例えば、
図7のブロック708)。揮発性メモリ・インターフェース200Aは、車載SoC104(
図1、
図2、及び
図4を参照)のデータ・バックボーン及びメモリ・サブシステム826を介して、第1の書き込み命令をカーブアウト部250に伝達する。
図8では、第1の書き込み命令は、エラー検出ブロック272によって、信号824で第1のサブセクション252に送られている。
【0118】
第1のサブセクション252は、第1のデータ・アドレス(
図8では「Address_0」と表されている)に第1のバイト(
図8では「Data0」と表されている)を記憶し、第1のデータ・アドレスの後の後続のデータ・アドレスに後続のバイトを書き込むことによって、データをメモリに書き込む。この書き込みは、
図8では「Time=T0」として表されている第1の時間に発生する。次に、第1のサブセクション252は、データが記憶されたことを確認する応答信号828をイニシエータ802に送る。応答信号828は、第1のサブセクション252によってデータ・バックボーン及びメモリ・サブシステム826に送られ、データ・バックボーン及びメモリ・サブシステム826が応答信号828を揮発性メモリ・インターフェース200A(
図2を参照)に転送する。揮発性メモリ・インターフェース200Aがロック解除されると、揮発性メモリ・インターフェース200Aは応答信号828を第1の(データ)バッファ820に転送する。
【0119】
第1の(データ)バッファ820は、カーブアウト部250から応答信号828で受信された「データ書き込み完了応答」を並べ替える。例えば、エラー検出ブロック272は、(例えば、
図7のブロック708で送られる第1の書き込み命令で)書き込み命令A及びBのペアをカーブアウト部250に送ることができる。書き込み命令Bは、書き込み命令Aの後にエラー検出ブロック272によって送られる。カーブアウト部250が書き込み命令A及びBに含まれるデータを書き込んだ後、カーブアウト部250は、第1及び第2のデータ書き込み完了応答をエラー検出ブロック272に送る。しかし、書き込み命令Bに対して受信される第2のデータ書き込み完了応答は、書き込み命令Aに対する第1のデータ書き込み完了応答の前にエラー検出ブロック272に到達する場合がある。この場合、第1の(データ)バッファ820は、第2のデータ書き込み完了応答を記憶し、第1のデータ書き込み完了応答を待機し、第1のデータ書き込み完了応答が到着したらそれを送り、第2のデータ書き込み完了応答を第1のデータ書き込み完了応答の後に送る。したがって、第1の(データ)バッファ820は、データ書き込み完了応答を、応答信号828において予想される順序に置く。
【0120】
第1の(データ)バッファ820は、応答信号828を安全アイランド・インターコネクト808に転送し、安全アイランド・インターコネクト808が応答信号828をイニシエータ802に転送する。この時点で、この例では、データ(例えば、16バイト)が第1の単一の書き込み操作で第1のサブセクション252に書き込まれている。
【0121】
エラー検出ブロック272はまた、第1のデータ・アドレスに基づいて第1のコード・アドレスを判断する(例えば、
図7のブロック710)。
図8では、第1のコード・アドレスは、第1のデータ・アドレスに16メガバイト(MB:MegaByte)を加算することによって計算される。しかしながら、実装例の詳細によっては、オフセットは他のサイズを有していてもよく、16MBは例として提供されている。さらに、第1のコード・アドレスの位置は、他の方法及び/又は計算を使用して判断されてもよい。
【0122】
エラー検出ブロック272は、第2の時間(例えば、
図8では「Time=T1」と識別されている)まで待機する(例えば、
図7のブロック712)。第1の時間と第2の時間とは異なる。第2の時間に、エラー検出ブロック272は、エラー検出コード及び第1のコード・アドレスを、揮発性メモリ・インターフェース200A(
図2を参照)を介して、カーブアウト部250の第2のサブセクション254に送る。つまり、エラー検出ブロック272は、第2の書き込み命令をカーブアウト部250の第2のサブセクション254に送る(例えば、
図7のブロック714)。揮発性メモリ・インターフェース200Aは、車載SoC104(
図1、
図2、及び
図4を参照)のデータ・バックボーン及びメモリ・サブシステム826を介して、第2の書き込み命令をカーブアウト部250に伝達する。
図8では、第2の書き込み命令は、エラー検出ブロック272によって、信号834で第2のサブセクション254に送られている。
【0123】
第2のサブセクション254は、第1のコード・アドレス(
図8では「Address_1」と表されている)に第1のエラー検出コード(
図8では「CRC0」と表されている)を記憶し、第1のコード・アドレスの後の後続のコード・アドレスに後続のエラー検出コードを書き込むことによって、エラー検出コードをメモリに書き込む。次に、第2のサブセクション254は、エラー検出コードが記憶されたことを確認する応答信号838をイニシエータ802に送る。
図8に示す実施例では、応答信号838は、第2のサブセクション254によってデータ・バックボーン及びメモリ・サブシステム826に送られ、データ・バックボーン及びメモリ・サブシステム826が応答信号838を揮発性メモリ・インターフェース200A(
図2を参照)に転送する。揮発性メモリ・インターフェース200Aがロック解除されると、揮発性メモリ・インターフェース200Aは応答信号838を第2の(コード)バッファ822に転送する。第2の(コード)バッファ822は、カーブアウト部250から応答信号838で受信された「コード書き込み完了応答」を並べ替える。例えば、エラー検出ブロック272は、書き込み命令A及びBに含まれるデータの第1及び第2のエラー検出コードをそれぞれ判断し、第1及び第2のエラー検出コードをカーブアウト部250に(例えば、第2の書き込み命令で)送る。カーブアウト部250が第1及び第2のエラー検出コードをメモリに書き込んだ後、カーブアウト部250は、第1及び第2のコード書き込み完了応答をそれぞれ第2の(コード)バッファ822に送る。しかし、第2のエラー検出コードに対して受信される第2のコード書き込み完了応答は、第1のエラー検出コードに対する第1のコード書き込み完了応答の前にエラー検出ブロック272に到達する場合がある。この場合、第2の(コード)バッファ822は、第2のコード書き込み完了応答を記憶し、第1のコード書き込み完了応答を待機し、第1のコード書き込み完了応答が到着したらそれを送り、第2のコード書き込み完了応答を第1のコード書き込み完了応答の後に送る。
【0124】
第2の(コード)バッファ822は、応答信号838をドロップすることがある。或いは、第2の(コード)バッファ822は、応答信号838を安全アイランド・インターコネクト808に転送し、安全アイランド・インターコネクト808が応答信号838をイニシエータ802に転送してもよい。この時点で、この例では、エラー検出コード(例えば、16バイト)が第2の単一の書き込み操作で第2のサブセクション254に書き込まれている。
【0125】
揮発性メモリ・インターフェース200Aには、エラー検出ブロック272と揮発性メモリ126とを接続する2つのパラレルの、及び任意選択で専用のインターフェースが含まれている場合がある。データは第1のインターフェースを介して第1のデータ・アドレスに送られ、エラー検出コードは第2のインターフェースを介して第1のコード・アドレスに送られ得る。このような実施例では、エラー検出ブロック272は、エラー検出ブロック272が(例えば、信号834に)エラー検出コードと第1のコード・アドレスとを含む第2の書き込み命令を第2のサブセクション254に第2のインターフェースを介して送るのと同時に、(例えば、信号824に)データと第1のデータ・アドレスとを含む第1の書き込み命令を第1のサブセクション252に第1のインターフェースを介して送ることができる。さらに、(データ)応答信号828及び(コード)応答信号838は、それぞれ第1のバッファ820及び第2のバッファ822に、それぞれ第1及び第2のインターフェースを介して同時に送信することができる。
【0126】
SI110のイニシエータ802(例えば、プロセッサ140)がカーブアウト部250からデータを読み取ることを望む場合、SI110はカーブアウト部250からデータとエラー検出コードの両方を受信する。SI110は、データがデータ・アドレスから読み取られるときと、エラー検出コードがコード・アドレスから読み取られるときとの間に遅延を発生させる。この遅延により、データに悪影響を与えるイベントがエラー検出コードにも悪影響を及ぼす可能性が低減する。SI110は、エラー検出ブロック272を介して読み取ったデータを渡す。エラー検出ブロック272は、読み取ったデータのチェック・コードを判断し、エラー検出コードとチェック・コードとを比較する。この比較は、以下の式3で表すことができる:
CRC_gen(Requested address,Fetched Data)==crc_inByte x(CRC_address) 式3
【0127】
式3では、演算子「==」は、演算子「==」の左にある式が演算子「==」の右にある式と等しいかどうかを示す。変数「Fetched Data」は、ブロック906において取得されたデータの少なくとも一部分(例えば、Byte x)を表し、変数「Requested address」は、データのその部分のデータ・アドレスを表し、変数「CRC_address」は、データの一部分(例えば、Byte x)のデータ・アドレスに基づいて判断されるコード・アドレスを表す。関数「CRC_gen」は、変数「Fetched Data」及び「Requested address」の値を入力として使用し、関数「CRC_gen」はその部分(例えば、Byte x)のチェック・コードを出力する。関数「CRC_gen」は、上記の式1の関数「CRC」と同一であり得る。関数「CRC_gen」の出力は、存在する場合、コード生成サブブロック273(
図8を参照)によって少なくとも部分的に計算され得る。式「crc_in
Byte x(CRC_address)」は、そのデータ・アドレスを使用してその部分(例えば、Byte x)に対して判断されたコード・アドレスから取得されたエラー検出コードを表す。したがって、式3は、チェック・コードがエラー検出コードと等しいか、又は一致するかを判断する。エラー検出ブロック272は、チェック・コードがエラー検出コードと一致しない場合に不一致エラーを生成し得る。エラー検出ブロック272は、不一致エラーをイニシエータ802及びSI障害アグリゲータ142に送り、これにより、命令149によって実装され、プロセッサ140によって実行される安全ソフトウェアによって不一致エラーがクリアされ得る。
【0128】
ここで、
図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つのシステム、又は本明細書で説明されているものを含むが、これらに限定されないシステムの任意の組み合わせによって実行され得る。
【0129】
図9は、本開示のいくつかの実施例による、カーブアウト部250(
図2、
図8、及び
図10を参照)からデータを読み取る方法900を示すフロー図である。説明を容易にするために、方法900はエラー検出ブロック272(
図2、
図8、及び
図10を参照)によって実行されているものとして説明する。方法900が開始される前に、イニシエータ802(
図8を参照)は、1つ又は複数のデータ・アドレスを含む第1の読み取り命令をエラー検出ブロック272に転送する。非限定的な例として、第1の読み取り命令には第1のデータ・アドレスしか含まれていない場合がある。
図9を参照すると、第1のブロック902において、エラー検出ブロック272は、イニシエータ802からデータ・アドレスを含む第1の読み取り命令を受信する。ブロック904では、エラー検出ブロック272は、第1の読み取り命令を第1のサブセクション252に転送し、データ・アドレスに記憶されているデータを要求する。第1の読み取り命令に第1のデータ・アドレスしか含まれていない場合、第1のサブセクション252は、第1のデータ・アドレスから始まる連続するメモリ・アドレスから、所定量のデータ(例えば、16バイト)を読み取ることができる。ブロック906では、エラー検出ブロック272は、第1のサブセクション252からデータ・アドレスに記憶されたデータを受信する。
【0130】
次に、ブロック908では、エラー検出ブロック272は、データに対応するエラー検出コードのコード・アドレスを(例えば、上記の式2を使用して)判断する。非限定的な例として、コード・アドレスはデータ・アドレスに少なくとも部分的に基づいて判断され得る。例えば、上記の式2に従って、コード・アドレスの各々は、データ・アドレスのうちの対応する1つ(変数「write_address」の値)にオフセット(変数「fixed_offset」の値)を加算することによって計算することができる。実装例の詳細に応じて、エラー検出ブロック272は、第1のデータ・アドレスに基づいて第1のコード・アドレスしか識別しない場合がある。次に、ブロック910では、エラー検出ブロック272は、ブロック908で判断されたコード・アドレスに記憶されたエラー検出コードを要求するのを待機する(例えば、数クロック・サイクル)。したがって、ブロック910では、エラー検出ブロック272は、データの読み取りとコード・アドレスからのエラー検出コードの読み取りとの間に遅延を発生させる。エラー検出ブロック272には、ブロック910においてエラー検出ブロック272が待機する時間を判断するために使用される読み取り遅延タイマ(図示せず)が含まれていてもよい。したがって、エラー検出ブロック272は、第2のセクション254からエラー検出コードを要求する前に、第6の所定の時間だけ待機することがある。
【0131】
待機後、次のブロック912で、エラー検出ブロック272は、ブロック908で判断されたコード・アドレスを含む第2の読み取り命令を第2のサブセクション254に送り、それらのコード・アドレスに記憶されているエラー検出コードを要求する。したがって、データを読み取るために、エラー検出ブロック272は、ブロック904及びブロック912においてそれぞれ1回ずつで、2回カーブアウト部250にアクセスする。第2の読み取り命令に第1のコード・アドレスしか含まれていない場合、第2のサブセクション254は、第1のコード・アドレスから始まる連続するメモリ・アドレスから、所定の数のエラー検出コード(例えば、16バイト)を読み取ることができる。ブロック914では、エラー検出ブロック272は、第2のサブセクション254からコード・アドレスに記憶されたエラー検出コードを受信する。ブロック916では、エラー検出ブロック272は、ブロック914で取得したエラー検出コードの各々のチェック・コードを(例えば、上記の式1を使用して)判断する。
【0132】
判断ブロック918において、エラー検出コードの各々について、エラー検出ブロック272は、エラー検出コードが、エラー検出コードに対応するチェック・コードと一致するかどうかを(例えば、上記の式3を使用して)判定する。エラー検出コードが、その対応するチェック・コードと一致する場合、判断ブロック918の判断は「はい」である。それ以外の場合、判断ブロック918の判断は「いいえ」である。判断ブロック918の判断が「はい」である場合、ブロック920では、エラー検出ブロック272は、エラー検出コードに対応するデータをイニシエータ802(
図8を参照)に転送する。判断ブロック918の判断が「いいえ」である場合、ブロック922では、エラー検出ブロック272は、不一致エラーを生成し、これをイニシエータ802及びSI障害アグリゲータ142(
図1、
図2、及び
図4を参照)に送り、これにより、命令149によって実装され、プロセッサ140によって実行される安全ソフトウェアによって不一致エラーがクリアされ得る。任意選択で、ブロック922では、エラー検出ブロック272は、エラー検出コード(例えば、ECCとして実装されている)にデータの回復に使用でき得る情報(例えば、ビット)が含まれている場合、不一致を訂正することを試みてもよい。エラー検出ブロック272がエラーを訂正できる場合、エラー検出ブロック272はブロック922での不一致エラーの生成を省略することができる。ブロック920の後、エラー検出ブロック272はブロック920に進み、データをイニシエータ802に転送する。その後、方法900は終了する。
【0133】
エラー検出ブロック272は、一度に2バイト以上のデータとそれに対応するエラー検出コードをカーブアウト部250から読み取ることができる。例えば、ブロック904~914の各々は、データの複数のブロックに対して実行することができる。非限定的な例として、ブロック904では、エラー検出ブロック272は、第1のデータ・アドレスから2バイト以上のデータを要求する第1の読み取り命令を第1のサブセクション252に送ることができる。第1のサブセクション252は、第1のデータ・アドレスから始まる連続したメモリ・アドレスからデータのバイトを読み取り、データのバイトをエラー検出ブロック272に送ることができる。このデータのバイトは、エラー検出ブロック272がブロック906で受信する。次に、ブロック908では、エラー検出ブロック272は、データ・アドレスに基づいてコード・アドレスを判断することができる。実装例の詳細に応じて、エラー検出ブロック272は、第1のデータ・アドレスに基づいて第1のコード・アドレスしか識別しない場合がある。次に、ブロック910では、エラー検出ブロック272は、データのバイトの読み取りとカーブアウト部250からのエラー検出コードの読み取りとの間に遅延を発生させる。次に、エラー検出ブロック272は、ブロック906で取得されたデータのバイトについて、カーブアウト部250に記憶されているエラー検出コードを要求することができる。例えば、エラー検出ブロック272は、第1のコード・アドレスを第2のサブセクション254に送ることができる。第2のサブセクション254は、第1のコード・アドレスから始まる連続したメモリ・アドレスからエラー検出コードを読み取り、エラー検出コードをエラー検出ブロック272に送ることができる。このエラー検出コードは、エラー検出ブロック272がブロック914で受信する。次に、方法900はブロック916で継続する。
【0134】
図10は、方法900を実行するエラー検出ブロック272の一例を示している。この例では、プロセッサ140は、
図8に示す例によって記憶されている16バイトのデータをカーブアウト部250から読み取る。
図10では、読み取られたデータは「rdata_in[127:0]」という名前の128ビットの配列によって記憶又は表現され、データは、「Address_0[39:0]」という名前の40ビットの配列によって記憶又は表現されている第1のデータ・アドレスから始めて記憶される。
図10では、イニシエータ802(例えば、プロセッサ140)が、安全アイランド・インターコネクト808を介してエラー検出ブロック272に第1の読み取り命令1004を送っていることを示している。安全アイランド・インターコネクト808は、第1の読み取り命令1004をエラー検出ブロック272に供給する(例えば、
図9のブロック902)。
【0135】
エラー検出ブロック272は、第3の時間(例えば、
図8では「Time=T3」と識別されている)に、第1のデータ・アドレスを、揮発性メモリ・インターフェース200A(
図2を参照)を介して、カーブアウト部250の第1のサブセクション252に送る。つまり、エラー検出ブロック272は、第1の読み取り命令をカーブアウト部250の第1のサブセクション252に転送する(例えば、
図9のブロック904)。揮発性メモリ・インターフェース200Aは、車載SoC104のデータ・バックボーン及びメモリ・サブシステム826を介して、第1の読み取り命令をカーブアウト部250に伝達する。
図10では、第1の読み取り命令は、エラー検出ブロック272によって、信号1010で第1のサブセクション252に送られている。
【0136】
第1のサブセクション252は、第1のデータ・アドレスにおける第1のバイト(「byte 0」)から始まるデータをメモリから読み取り、第1のデータ・アドレスの後の後続のデータ・アドレスからの後続のバイトを読み取る。SI110は、所定のサイズ(例えば、16バイト)のデータをカーブアウト部250から読み取ることができる。次に、第1のサブセクション252は、読み取られたデータを含む応答信号1012をイニシエータ802に送る。応答信号1012は、第1のサブセクション252によってデータ・バックボーン及びメモリ・サブシステム826に送られ、データ・バックボーン及びメモリ・サブシステム826が応答信号1012を揮発性メモリ・インターフェース200A(
図2を参照)に転送する。揮発性メモリ・インターフェース200Aがロック解除されると、揮発性メモリ・インターフェース200Aは応答信号1012を第1の(データ)バッファ820に転送する(例えば、
図9のブロック906)。読み取られ、応答信号1012に含まれているデータは、自動的にデータ読み取り完了を示す。そのため、データ読み取り完了応答と特徴付けられ得る。第1の(データ)バッファ820がデータ書き込み完了応答に対して行うのと同様に、第1の(データ)バッファ820は、データ読み取り完了応答を、応答信号1012において予想される順序にすることができる。この時点で、この例では、データ(例えば、16バイト)が第1の単一の読み取り操作で第1のサブセクション252から読み取られており、第1の(データ)バッファ820によって予想される順序に置かれている。
【0137】
次に、エラー検出ブロック272は、第1のデータ・アドレスに基づいて第1のコード・アドレス(「Address_1」)を判断する(例えば、
図9のブロック908)。
図10では、第1のコード・アドレスは、第1のデータ・アドレス(「Address_0」)に(例えば)16メガバイト(「MB」)を加算することによって計算される。
【0138】
次に、エラー検出ブロック272は、第4の時間(例えば、
図10では「Time=T4」と識別されている)まで待機する(例えば、
図9のブロック910)。第4の時間に、エラー検出ブロック272は、揮発性メモリ・インターフェース200A(
図2を参照)を介して、第2のサブセクション254内の第1のコード・アドレスに記憶されているエラー検出コードを要求する。つまり、エラー検出ブロック272は、第2の読み取り命令をカーブアウト部250の第2のサブセクション254に送る(例えば、
図9のブロック912)。揮発性メモリ・インターフェース200Aは、車載SoC104のデータ・バックボーン及びメモリ・サブシステム826を介して、第2の読み取り命令をカーブアウト部250に伝達する。
図10では、第2の読み取り命令は、エラー検出ブロック272によって、信号1014で第2のサブセクション254に送られている。
【0139】
第2のサブセクション254は、第1のコード・アドレスにおける(例えば、「byte 0」の)第1のエラー検出コードを読み取り、第1のコード・アドレスの後の後続のコード・アドレスから後続のエラー検出コードを読み取ることによって、エラー検出コードをメモリから読み取る。
図8及び
図10の例では、エラー検出コードの各々のサイズは1バイトである。次に、第2のサブセクション254は、メモリから読み取られたエラー検出コードを含む応答信号1016をイニシエータ802に送る。
図10では、エラー検出コードを伝達する信号と信号1014とは、破線矢印によって示されている。
図10に示す実施例では、応答信号1016は、第2のサブセクション254によってデータ・バックボーン及びメモリ・サブシステム826に送られ、データ・バックボーン及びメモリ・サブシステム826が応答信号1016を揮発性メモリ・インターフェース200A(
図2を参照)に転送する。揮発性メモリ・インターフェース200Aがロック解除されると、揮発性メモリ・インターフェース200Aは応答信号1016を第2の(コード)バッファ822に転送する(例えば、
図9のブロック914)。読み取られ、応答信号1016に含まれているエラー検出コードは、自動的にコード読み取り完了を示す。そのため、コード読み取り完了応答と特徴付けられ得る。第2の(コード)バッファ822がコード書き込み完了応答に対して行うのと同様に、第2の(コード)バッファ822は、コード読み取り完了応答を、応答信号1016において予想される順序に置くことができる。この時点で、この例では、エラー検出コード(例えば、16バイト)が第2の単一の読み取り操作で第2のサブセクション254から読み取られており、第2の(コード)バッファ822によって予想される順序に置かれている。
【0140】
エラー検出ブロック272が第4の時間(例えば、
図10では「Time=T4」と識別されている)まで待機すると(例えば、
図9のブロック910)、エラー検出ブロック272は、第1の読み取り命令と第2の読み取り命令との間に単に時間間隔を空ける。エラー検出ブロック272は、エラー検出ブロック272が応答信号1012のデータを受信した後、第2のサブセクション254からエラー検出コードを要求することができる。或いは、エラー検出ブロック272は、第2のサブセクション254からエラー検出コードを要求する前に、応答信号1012のデータを受信するまで待機しなくてもよい。つまり、第4の時間は、応答信号1012が受信されたときではなく、第1の読み取り命令が送られたときに基づいて判断され得る。
【0141】
前述のように、応答信号1012内でバイトは順不同であり得るため、第1の(データ)バッファ820はバイトを並べ替えることができる。同様に、第2の(コード)バッファ822は、応答信号1016内でエラー検出コードが順不同である場合に、エラー検出コードを並べ替えることができる。第1の(データ)バッファ820は、各々、データバイトのうちの1つを伝達する信号1022-0~1022-15を出力し、第2の(コード)バッファ822は、各々、エラー検出コードのうちの1つを伝達する信号1024-0~1024-15を出力する。信号1022-0~1022-15は、それぞれ信号1024-0~1024-15に対応している。第1のバッファ820及び第2のバッファ822は、信号1022-0~1022-15及び1024-0~1024-15をルーティング又は並べ替えて、データの各バイトを、バイトに対して作成されたエラー検出コードに関して既知の位置に配置することができる。
図10に示す実施例では、信号1022-0~1022-15によって伝達されるバイトは、信号1024-0~1024-15によって伝達されるエラー検出コードにインターリーブされる。したがって、
図10のように、データのバイトは網掛けブロックb0~b15によって表される位置に置かれ、エラー検出コードはブロックc0~c15によって表される位置に置かれる。
【0142】
次に、コード生成サブブロック273がデータのバイトの各々についてチェック・コードを(例えば、上記の式1を使用して)判断する(例えば、
図9のブロック916)。したがって、コード生成サブブロック273は、入力として、信号1022-0~1022-15のデータのバイトと、信号1024-0~1024-15の対応するエラー検出コードとを受信する。
【0143】
エラー検出コードの各々について、エラー検出ブロック272は、エラー検出コードが、エラー検出コードに対応するチェック・コードと一致するかどうかを判定する(例えば、
図9の判断ブロック918)。エラー検出ブロック272は、データのバイトを含むデータ信号1032とともに、
図10では、ANDゲートとして実装されているものとして示されている論理コンポーネント1034に転送されるパス信号1030において一致したかどうかを示す。パス信号1030が、バイトについて記憶されているエラー検出コードは、そのバイトに対して作成されたチェック・コードと一致することを示している場合、論理コンポーネント1034は、バイトをチェック済みデータ信号1036(データのバイトのみを含む)で出力し、チェック済みデータ信号1036をイニシエータ802に転送する。一方、パス信号1030が不一致を示している場合、論理コンポーネント1034はバイトをチェック済みデータ信号1036でイニシエータ802に転送しない。代わりに、エラー検出ブロック272はバイトを破棄する、及び/又はバイトを不一致が発生したことを示す情報(例えば、ゼロ)で置換することができる。非限定的な例では、不一致を生成したバイトのビットは0に設定され得る。チェック済みデータ信号1036は、イニシエータ802に転送される(例えば、
図9のブロック920)。エラー検出ブロック272は、エラー検出コードがエラー検出コードに対応するチェック・コードと一致しない場合、不一致エラーを生成し、これをイニシエータ802に送ることができる(例えば、
図9のブロック922)。つまり、パス信号1030が1つ又は複数の不一致を示している場合、エラー検出ブロック272は不一致エラーを生成し、これをイニシエータ802に送ることができる。或いは又は加えて、エラー検出ブロック272は、不一致エラーを、訂正されていないエラーとしてSI障害アグリゲータ142に送る場合もある。したがって、カーブアウト部250への記憶中及び/又はカーブアウト部250からの取得中にデータ又はエラー検出コードで発生したエラーは検出され、(例えば、訂正されていないエラーとして)報告され得る。
【0144】
前述のように、揮発性メモリ・インターフェース200Aには、エラー検出ブロック272と揮発性メモリ126とを接続する2つのパラレルの、及び任意選択で専用のインターフェースが含まれている場合がある。このような実施例では、エラー検出ブロック272は、エラー検出ブロック272が(例えば、信号1014に)第1のコード・アドレスを含む第2の読み取り命令を第2のサブセクション254に第2のインターフェースを介して送るのと同時に、(例えば、信号1010に)第1のデータ・アドレスを含む第1の読み取り命令を第1のサブセクション252に第1のインターフェースを介して送ることができる。さらに、第1のサブセクション252から読み取られた(例えば、且つ応答信号1012で送信される)データと、第2のサブセクション254から読み取られた(例えば、且つ応答信号1016で送信される)エラー検出コードとは、それぞれ、第1及び第2のインターフェースを介して同時に、それぞれ、第1のバッファ820及び第2のバッファ822に送信され得る。
【0145】
図2を参照すると、エラー検出ブロック272には、エラー検出ブロック272がカーブアウト部250からデータを読み取る及び/又はカーブアウト部にデータを書き込む必要のある時間の長さを制限する、エグレス・タイマ274及びイングレス・タイマ276などの少なくとも1つのトランザクション・タイマが含まれているか、又は接続されている場合がある。エグレス・タイマ274及び/又はイングレス・タイマ276は、アクセスがエラー検出ブロック272を通過する場合は常に自動的に開始する。例えば、イングレス・タイマ276は、エラー検出ブロック272とイニシエータ802(例えば、プロセッサ140)との間でデータが通過する場合は常に開始することができ、エグレス・タイマ274は、エラー検出ブロック272とSoCドメイン(例えば、カーブアウト部250)との間でデータが通過する場合は常に開始することができる。イングレス・タイマ276は、エラー検出ブロック272の機能をモニタリングするのに役立ち、及び/又は(例えば、エグレス・タイマ274が正常に機能していない場合に)エグレス・タイマ274のバックアップ機能を提供するのに役立ち得る。
【0146】
書き込み操作中、(例えば、
図7のブロック702において)イニシエータ802がエラー検出ブロック272にデータを渡してカーブアウト部250に書き込むと、イングレス・タイマ276が開始し得る。その後、(例えば、
図7のブロック708において)データがエラー検出ブロック272及び/又はSIドメインから出たときに、エグレス・タイマ274が開始し得る。エグレス・タイマ274は、エラー検出ブロック272によって、応答(例えば、
図8に示す応答信号828)がカーブアウト部250から受信されると、停止又はリセットされ得る。その後、エラー検出ブロック272によって、応答(例えば、
図8に示す応答信号828)がイニシエータ802(
図8を参照)に転送されると、イングレス・タイマ276が停止又はリセットされ得る。エグレス・タイマ274が第1の閾値時間を超えて時間が経過したことと、エラー検出ブロック272が応答を受信していないこととを示している場合、これはイニシエータ802がカーブアウト部250から応答(例えば、
図8に示す応答信号828)を受信していないことを意味し、イニシエータ802(例えば、プロセッサ140)は、エグレス・タイムアウト・エラーを生成する。イングレス・タイマ276が第2の閾値時間を超えて時間が経過したことと、エラー検出ブロック272がイニシエータ802に応答を送信していないこととを示している場合、これはイニシエータ802がカーブアウト部250から応答を受信していないことを意味し、イニシエータ802はイングレス・タイムアウト・エラーを生成する。
【0147】
読み取り操作中、(例えば、
図9のブロック902において)エラー検出ブロック272がイニシエータ802から読み取り要求を受信すると、イングレス・タイマ276が起動し得る。次に、エラー検出ブロック272が、(例えば、
図9のブロック904において)カーブアウト部250から、第1のデータ・アドレスに記憶されているデータを要求すると、エグレス・タイマ274が起動し得る。エグレス・タイマ274は、(例えば、
図9のブロック906において)エラー検出ブロック272によって、カーブアウト部250からデータを受信すると、停止又はリセットされ得る。その後、エグレス・タイマ276は、(例えば、
図9のブロック920において)エラー検出ブロック272によって、データがイニシエータ802に転送されると、停止又はリセットされ得る。エグレス・タイマ274が第1の閾値時間が経過していて、エラー検出ブロック272がカーブアウト部250からデータを受信していないことを示している場合、これはイニシエータ802がエラー検出ブロック272から(例えば、
図10に示すチェック済みデータ信号1036で)データを受信していないことを意味し、イニシエータ802は、エグレス・タイムアウト・エラーを生成する。イングレス・タイマ276が第2の閾値時間を超えて時間が経過したことと、エラー検出ブロック272がイニシエータ802にデータを送信していないこととを示している場合、これはイニシエータ802がカーブアウト部250からデータを受信していないことを意味し、イニシエータ802はイングレス・タイムアウト・エラーを生成する。
【0148】
図11は、いくつかの実施例による、エラー検出ブロック272にエグレス・タイマ274及びイングレス・タイマ276(
図2を参照)が含まれている、又はこれらに接続されている場合に、エラー検出ブロック272(
図2、
図8、及び
図10を参照)によって生成されるエラー通知を示すブロック図の図である。
図11では、イニシエータ802(
図8及び
図10を参照)が、第1の書き込み命令804(
図8を参照)か又は第1の読み取り命令1004(
図10を参照)のいずれかを含む信号1102を、エラー検出ブロック272に送る。前述したように、エグレス・タイマ274は、書き込み操作中に、データがエラー検出ブロック272及び/又はSIドメインから出ると起動し、エグレス・タイマ274は、読み取り操作中に、エラー検出ブロック272がカーブアウト部250から、第1のデータ・アドレスに記憶されているデータを要求すると起動し得る。ブロック1104は、エグレス・タイマ274がタイムアウトしたことを示す。エグレス・タイマ274は、例えば、エラー検出ブロック272が書き込み操作中にカーブアウト部250から応答(例えば、
図8に示す応答信号828)を受信しておらず第1の閾値時間を超えて時間が経過した場合に、タイムアウトし得る。別の非限定的な例として、エグレス・タイマ274は、エラー検出ブロック272が読み取り操作中にエラー検出ブロック272からデータを(例えば、
図10に示す応答信号1012で)受信しておらず第1の閾値時間を超えて時間が経過した場合に、タイムアウトし得る。エグレス・タイマ274がタイムアウトすると、イニシエータ802(例えば、プロセッサ140)がエグレス・タイムアウト・エラー1106を生成し、エグレス・タイムアウト・エラー1106をエラー・ロガー1108に転送する。一方、エグレス・タイマ274がタイムアウトしていない場合、エグレス・タイマ274は停止又はリセットされ得る。これは、エラー検出ブロック272が書き込み操作中にカーブアウト部250から応答(例えば、応答信号828)を受信するか、又は、第1の閾値時間が経過する前に読み取り操作中にカーブアウト部250からデータ(例えば、応答信号1012で)を受信する場合に、起こる可能性がある。
【0149】
前述のように、イングレス・タイマ276は、書き込み操作中に(例えば、
図7のブロック702において)イニシエータ802がエラー検出ブロック272にデータを渡してカーブアウト部250に書き込むと起動し得る。又は、イングレス・タイマ276は、(例えば、
図9のブロック902において)読み取り操作中にエラー検出ブロック272がイニシエータ802から読み取り要求を受信すると、起動し得る。したがって、イングレス・タイマ276(
図2を参照)は、信号1102に第1の読み取り命令804(
図8を参照)又は第1の読み取り命令1004(
図10を参照)が含まれており、その命令がエラー検出ブロック272(
図2、
図8、及び
図10を参照)によって受信されると起動し得る。ブロック1114は、イングレス・タイマ276がタイムアウトしたことを示す。イングレス・タイマ276は、例えば、第2の閾値時間を超えて時間が経過していて、書き込み操作中にイニシエータ802(
図8を参照)がカーブアウト部250から応答(例えば、
図8に示す応答信号828)を受信しなかった場合にタイムアウトし得る。別の非限定的な例として、イングレス・タイマ276は、第2の閾値時間を超えて時間が経過しており、読み取り操作中にイニシエータ802がカーブアウト部250からデータ(例えば、
図10に示すチェック済みデータ信号1036)を受信していない場合にタイムアウトし得る。イングレス・タイマ276がタイムアウトすると、イニシエータ802はイングレス・タイムアウト・エラー1116を生成し、イングレス・タイムアウト・エラー1116をエラー・ロガー1108に転送する。一方、イングレス・タイマ276がタイムアウトしていない場合、イングレス・タイマ276は停止又はリセットされ得る。これは、エラー検出ブロック272が書き込み操作中に応答(例えば、応答信号828)をイニシエータ802に転送するか、又はエラー検出ブロック272が読み取り操作中にデータ(例えば、チェック済みデータ信号1036)をイニシエータ802に転送する場合に起こる可能性がある。
【0150】
ブロック1124は、エラー検出ブロック272(
図2、
図8、及び
図10を参照)のコード生成サブブロック273(
図2、
図8、及び
図10を参照)が、エラー検出コード又はチェック・コードの生成中にエラーが発生したことを示すコード生成/チェック・エラー1126を生成することができることを示している。いくつかの実施例では、コード生成/チェック・エラー1126は、不一致が発生したことを示すために使用され得る。非限定的な例として、信号1102に第1の書き込み命令804が含まれている場合、コード生成サブブロック273はエラー検出コードを生成している間にコード生成エラーを生成することができる。他の非限定的な例として、信号1102に第1の読み取り命令1004が含まれている場合、エラー検出ブロック272は、チェック・コードを生成している間に不一致エラー及び/又はコード生成エラーを生成することができる。これは、コード生成/チェック・エラー1126としてエラー・ロガー1108に転送される。
【0151】
エラー・ロガー1108は、エラー1106、1116、及び1126をエラー通知1130に集約する障害アグリゲータとして機能することができ、エラー・ロガー1108はこの通知をSI障害アグリゲータ142に送る。
【0152】
車載SoC104が最初にブートしたときに、SI110のプロセッサ140は、カーブアウト部250からデータをプリフェッチしようと試みることができる。プリフェッチとは、カーブアウト部250からのデータの非意図的な読み取りの一種であると特徴付けられ得る。共有の揮発性メモリ126は揮発性であるため、この時点で、カーブアウト部250は、エラー検出コードがないか、又は不一致エラー検出コードに関連付けられた初期化されていないデータを記憶している可能性がある。エラー検出ブロック272が不一致エラーを生成しないようにするために、SI110(例えば、プロセッサ140、DMAエンジン402など)は、プロセッサ140がプリフェッチする又はプリフェッチする可能性のあるデータについて、1つ又は複数のエラー検出コードをカーブアウト部250に書き込むことができる。非限定的な例として、SI110は初期データをカーブアウト部250に書き込むことができる。これにより、エラー検出ブロック272のハードウェアは、コード・アドレスに各々関連付けられている、初期データの1つ又は複数のエラー検出コードを判断する。次に、SI110によって、カーブアウト部250が、各エラー検出コードをその関連するコード・アドレスに記憶することができる。したがって、プリフェッチ操作中に、第2のサブセクション254によって記憶されるエラー検出コードは第1のサブセクション252に記憶されているデータに対応し、エラー検出ブロック272は不一致エラーを生成しない。
【0153】
図2を参照すると、SI110は、車載プラットフォーム100(
図1を参照)がカーブアウト部250を必要としない場合、コード生成サブブロック273(
図2、
図8、及び
図10を参照)及び/又はエラー検出ブロック272(例えば、ソフトウェア・レジスタ書き込みを使用して)をオフにすることができる。例えば、SI110は、揮発性メモリ126が車載プラットフォーム100に十分なリスク・レベルで動作している場合、コード生成サブブロック273及び/又はエラー検出ブロック272をオフにすることができる。
【0154】
本明細書で説明されるこの配置及び他の配置は、実例としてのみ記載されていることを理解すべきである。他の配置及び要素(例えば、マシン、インターフェース、機能、順序、機能のグループ分けなど)を、示されているものに加えて又は代わりに使用することができ、また、いくつかの要素を完全に省略することもできる。さらに、本明細書で説明される要素のうちの多くは、個別の若しくは分散されたコンポーネントとして、又は他のコンポーネントと併せて、並びに任意の適切な組み合わせ及び場所で実装され得る機能的エンティティである。本明細書においてエンティティによって実行されていると説明される様々な機能は、ハードウェア、ファームウェア、及び/又はソフトウェアによって実行され得る。例えば、メモリに記憶された命令を実行するプロセッサによって、様々な機能が実行され得る。
【0155】
自律車両の例
図12は、本開示のいくつかの実施例による、自律車両の例1200の図である。自律車両1200(或いは、本明細書では「車両1200」とも呼ぶ)には、自動車といった乗用車、トラック、バス、ファースト・レスポンダ車両、シャトル、電動又はモータ付き自転車、オートバイ、消防車、警察車両、救急車、ボート、建設用車両、潜水艦、ドローン、及び/又は別のタイプの車両(例えば、無人及び/又は1人若しくは複数の乗客を収容できる)が含まれ得るが、これらに限定されない。自律車両は、一般に、米国運輸省の一部門である幹線道路交通安全局(NHTSA:National Highway Traffic Safety Administration)によって定義される自動化レベルと、自動車技術者協会(SAE)の「Taxonomy and Definitions for Terms Related to Driving Automation Systems for On-Road Motor Vehicles」(規格番号J3016-201806、2018年6月15日発行、規格番号J3016-201609、2016年9月30日発行、並びにこの規格の以前及び将来のバージョン)とに関して説明される。車両1200は、SAEによって定義されている自律運転レベルのレベル2~レベル5のうちの1つ又は複数に従って機能することができる。例えば、車両1200は、実施例に応じて、部分運転自動化(レベル2)、条件付き自動化(レベル3)、高自動化(レベル4)、及び/又は完全自動化(レベル5)が可能であり得る。
【0156】
車両1200には、シャシー、車両ボディ、ホイール(例えば、2個、4個、6個、8個、18個など)、タイヤ、車軸、及び車両の他のコンポーネントなどのコンポーネントが含まれ得る。車両1200には、内燃エンジン、ハイブリッド発電装置、完全電気エンジン、及び/又は別の推進システム・タイプなどの推進システム1250が含まれ得る。推進システム1250は、車両1200の推進力を有効にするために、トランスミッションを含み得る車両1200のドライブ・トレインに接続され得る。推進システム1250は、スロットル/アクセル1252からの信号の受信に応じて制御され得る。
【0157】
ハンドルを含み得るステアリング・システム1254を使用して、推進システム1250が動作しているとき(例えば、車両が動いているとき)に車両1200を(例えば、所望の経路又はルートに沿って)誘導することができる。ステアリング・システム1254は、ステアリング・アクチュエータ1256から信号を受信し得る。ハンドルは、完全自動化(レベル5)機能では任意選択であり得る。
【0158】
ブレーキ・センサ・システム1246を使用して、ブレーキ・アクチュエータ1248及び/又はブレーキ・センサからの信号の受信に応じて、車両ブレーキを作動させることができる。
【0159】
1つ又は複数のCPU、システム・オン・チップ(SoC)1204(
図14)、及び/又はGPUを含み得るコントローラ1236は、車両1200の1つ又は複数のコンポーネント及び/又はシステムに信号(例えば、コマンドを表す)を提供することができる。例えば、コントローラは、信号を送って、1つ又は複数のブレーキ・アクチュエータ1248を介して車両ブレーキを動作させる、1つ又は複数のステアリング・アクチュエータ1256を介してステアリング・システム1254を動作させる、及び/又は1つ又は複数のスロットル/アクセル1252を介して推進システム1250を動作させることができる。コントローラ1236は、センサ信号を処理する1つ又は複数のオンボード(例えば、統合された)コンピューティング・デバイス(例えば、スーパーコンピュータ)が含まれており、操作コマンド(例えば、コマンドを表す信号)を出力して、自律運転を可能にする及び/又は車両1200を運転する人間の運転者を支援することができる。コントローラ1236には、自律運転機能用の第1のコントローラ1236、機能安全機能用の第2のコントローラ1236、人工知能機能(例えば、コンピュータ・ビジョン)用の第3のコントローラ1236、インフォテインメント機能用の第4のコントローラ1236、緊急状態での冗長性用の第5のコントローラ1236、及び/又は他のコントローラが含まれ得る。いくつかの例では、単一のコントローラ1236が上記の機能のうちの2つ以上を処理してもよく、2つ以上のコントローラ1236が単一の機能を処理してもよく、及び/又はその任意の組み合わせであってもよい。
【0160】
コントローラ1236は、1つ又は複数のセンサから受信したセンサ・データ(例えば、センサ入力)に応じて、車両1200の1つ若しくは複数のコンポーネント及び/又はシステムを制御するための信号を提供することができる。センサ・データは、例えば、グローバル・ナビゲーション衛星システム・センサ1258(例えば、全地球測位システム・センサ)、RADARセンサ1260、超音波センサ1262、LIDARセンサ1264、慣性測定ユニット(IMU:Inertial Measurement Unit)センサ1266(例えば、加速度計、ジャイロスコープ、磁気コンパス、磁力計など)、マイク1296、ステレオ・カメラ1268、ワイドビュー・カメラ1270(例えば、魚眼カメラ)、赤外線カメラ1272、サラウンド・カメラ1274(例えば、360度カメラ)、長距離及び/又は中距離カメラ1298、(例えば、車両1200の速度を測定するための)速度センサ1244、振動センサ1242、ステアリング・センサ1240、(例えば、ブレーキ・センサ・システム1246の一部としての)ブレーキ・センサ1246、及び/又は他のセンサ・タイプであり、限定されることなく、これらから受信され得る。
【0161】
コントローラ1236のうちの1つ又は複数が、車両1200の計器群1232から入力(例えば、入力データによって表される)を受信し、ヒューマンマシン・インターフェース(HMI:Human-Machine Interface)ディスプレイ1234、可聴アナンシエータ、スピーカを介して、及び/又は車両1200の他のコンポーネントを介して、(例えば、出力データ、表示データなどで表される)出力を提供することができる。出力には、車速、速度、時間、マップ・データ(例えば、
図14のHDマップ1222)、位置データ(例えば、マップ上などの車両1200の位置)、方向、他の車両の位置(例えば、占有グリッド)、物体に関する情報、及びコントローラ1236によって知覚される物体のステータスなどの情報が含まれ得る。例えば、HMIディスプレイ1234には、1つ又は複数の物体(例えば、道路標識、注意標識、信号機の変化など)の存在に関する情報、及び/又は車両が行った、行っている、若しくはこれから行う運転操作に関する情報(例えば、ここで車線変更する、3キロメートル(約2マイル)先の34B出口を出るなど)が表示され得る。
【0162】
車両1200にはさらに、ネットワーク・インターフェース1224が含まれている。これは1つ若しくは複数のワイヤレス・アンテナ1226及び/又はモデムを使用して、1つ又は複数のネットワークを介して通信することができる。例えば、ネットワーク・インターフェース1224は、LTE、WCDMA(登録商標)、UMTS、GSM、CDMA2000などを介した通信が可能である。ワイヤレス・アンテナ1226はまた、ブルートゥース(登録商標)、ブルートゥースLE、Z-Wave、ジグビーなどのローカル・エリア・ネットワーク、及び/又はLoRaWAN、SigFoxなどの低電力ワイド・エリア・ネットワーク(LPWAN)を使用して、環境内の物体(例えば、車両、モバイル・デバイスなど)間の通信も可能にし得る。
【0163】
前述のように、少なくともいくつかの実施例では、車載プラットフォーム100(
図1を参照)は、自律車両1200のコンポーネントであり得る。このような実施例では、コントローラ1236に車載SoC104が含まれている。
【0164】
図13は、本開示のいくつかの実施例による、
図12の自律車両1200の例のカメラ位置及び視野の一例である。カメラとそれぞれの視野は、1つの実施例であり、限定を意図したものではない。例えば、追加及び/又は代替のカメラを含めることができ、並びに/或いはカメラを車両1200の別の位置に設置することができる。
【0165】
カメラのカメラ・タイプには、車両1200のコンポーネント及び/又はシステムとの使用に適応され得るデジタル・カメラが含まれ得るが、これに限定されない。カメラは、自動車安全水準(ASIL)B及び/又は別のASILで動作し得る。カメラ・タイプは、実施例に応じて1秒当たり60フレーム(fps:frames per second)、120fps、240fpsなどの任意の画像キャプチャ・レートが可能であり得る。カメラはロール・シャッタ、グローバル・シャッタ、別のタイプのシャッター、又はそれらの組み合わせを使用することが可能であり得る。いくつかの実例では、カラー・フィルタ・アレイには、レッド・クリア・クリア・クリア(RCCC:Red Clear Clear Clear)カラー・フィルタ・アレイ、レッド・クリア・クリア・ブルー(RCCB:Red Clear Clear Blue)カラー・フィルタ・アレイ、レッド・ブルー・グリーン・クリア(RBGC:Red Blue Green Clear)カラー・フィルタ・アレイ、Foveon X3カラー・フィルタ・アレイ、Bayerセンサ(RGGB)カラー・フィルタ・アレイ、モノクロ・センサ・カラー・フィルタ・アレイ、及び/又は別のタイプのカラー・フィルタ・アレイが含まれ得る。いくつかの実施例では、RCCC、RCCB、及び/又はRBGCカラー・フィルタ・アレイを有するカメラなどのクリア・ピクセル・カメラを使用して、光の感受性を高めることができる。
【0166】
いくつかの実例では、これらのカメラのうちの1つ又は複数を使用して、高度運転者支援システム(ADAS)機能を(例えば、冗長設計又はフェイルセーフ設計の一部として)実行することができる。例えば、多機能モノ・カメラを取り付けて、車線逸脱警報、交通標識アシスト、及びインテリジェント・ヘッドランプ・コントロールなどの機能を提供することができる。これらのカメラのうちの1つ又は複数(例えば、すべてのカメラ)は、同時に画像データ(例えば、ビデオ)を記録して提供することができる。
【0167】
これらのカメラのうちの1つ又は複数は、カスタム設計(3Dプリントされた)アセンブリなどの取り付けアセンブリに取り付けられて、カメラの画像データ・キャプチャ機能を妨げる可能性のある、車の内部からの迷光及び反射(例えば、フロントガラス・ミラーに反射したダッシュボードからの反射)を遮断することができる。サイドミラー取り付けアセンブリを参照すると、サイドミラー・アセンブリは、カメラ取り付けプレートがサイドミラーの形状と一致するように、カスタム3Dプリントすることができる。いくつかの実例では、カメラは、サイドミラーに統合されていてもよい。サイドビュー・カメラの場合、カメラはキャビンの各コーナーにある4本の柱内に統合されていてもよい。
【0168】
車両1200の前の環境の部分を含む視野を有するカメラ(例えば、前面カメラ)をサラウンド・ビューに使用して、前向きの経路及び障害物を識別するのに役立ち、1つ又は複数のコントローラ1236及び/又は制御SoCを用いて、占有グリッドの生成及び/又は優先車両経路の判断に不可欠な情報を提供するのに役立ち得る。前面カメラを使用して、緊急ブレーキ、歩行者検知、及び衝突回避など、LIDARと同じADAS機能のうちの多くを実行することができる。前面カメラはまた、車線逸脱警報(LDW:Lane Depature Warning)、自律クルーズ制御(ACC:Autonomous Cruise Control)、及び/又は交通標識認識などの他の機能などのADAS機能及びシステムにも使用することができる。
【0169】
例えば、相補型金属酸化膜半導体(CMOS:Complementary Metal Oxide Semiconductor)カラー・イメージャを含む単眼カメラ・プラットフォームなどの様々なカメラを前面構成で使用することができる。別の実例は、周辺から視界に入ってくる物体(例えば、歩行者、横断する交通、又は自転車)を知覚するために使用され得るワイドビュー・カメラ1270であり得る。
図13には1つのワイドビュー・カメラしか示されていないが、車両1200には任意の数のワイドビュー・カメラ1270があってもよい。また、長距離カメラ1298(例えば、ロング・ビュー・ステレオ・カメラ・ペア)を、特にニューラル・ネットワークがまだトレーニングされていない物体について、奥行きベースの物体検出に使用することができる。長距離カメラ1298はまた、物体の検出及び分類だけでなく、基本的な物体の追跡にも使用することができる。
【0170】
1つ又は複数のステレオ・カメラ1268を前面構成に含めることもできる。ステレオ・カメラ1268には、プログラマブル論理(例えば、FPGA)及びCAN又はイーサネット(登録商標)・インターフェースが統合されているマルチコア・マイクロプロセッサを単一のチップに提供し得るスケーラブルな処理ユニットを含む統合された制御ユニットが含まれている場合がある。このようなユニットを使用して、車両の環境の3Dマップを生成することができる。これには、画像内のすべての点の距離推定値が含まれる。別のステレオ・カメラ1268には、2つのカメラ・レンズ(左右に1つずつ)と、車両からターゲット物体までの距離を測定し、生成された情報(例えば、メタデータ)を使用して自律緊急ブレーキ及び車線逸脱警報機能を作動させ得る画像処理チップとを含み得るコンパクト・ステレオ・ビジョン・センサが含まれていてもよい。他のタイプのステレオ・カメラ1268を、本明細書に説明されているものに加えて、又はその代わりに使用することができる。
【0171】
車両1200の横の環境の部分を含む視野を有するカメラ(例えば、サイドビュー・カメラ)をサラウンド・ビューに使用して、占有グリッドを作成及び更新するだけでなく、側面衝撃衝突警報を生成するために使用される情報を提供することができる。例えば、サラウンド・カメラ1274(例えば、
図13に示す4つのサラウンド・カメラ1274)を車両1200の周囲に配置することができる。サラウンド・カメラ1274には、ワイドビュー・カメラ1270、魚眼カメラ、360度カメラなどが含まれ得る。例えば、4つの魚眼カメラを車両の前部、後部、及び側部に配置することができる。別の配置では、車両は3つのサラウンド・カメラ1274(例えば、左、右、及び後部)を使用し、1つ又は複数の他のカメラ(例えば、前向きのカメラ)を4つ目のサラウンド・ビュー・カメラとして利用することができる。
【0172】
車両1200の後方の環境の部分を含む視界を有するカメラ(例えば、リヤビュー・カメラ)を、駐車支援、サラウンド・ビュー、後部衝突警報、並びに占有グリッドの作成及び更新に使用することができる。本明細書で説明するように、前面カメラとしても適しているカメラ(例えば、長距離及び/又は中距離カメラ1298、ステレオ・カメラ1268、赤外線カメラ1272など)を含むが、これらに限定されない様々なカメラを使用することができる。
【0173】
図14は、本開示のいくつかの実施例による、
図12の自律車両の例1200のシステム・アーキテクチャの例のブロック図である。本明細書で説明されるこの配置及び他の配置は、実例としてのみ記載されていることを理解すべきである。他の配置及び要素(例えば、マシン、インターフェース、機能、順序、機能のグループ分けなど)を、示されているものに加えて又は代わりに使用することができ、また、いくつかの要素を完全に省略することもできる。さらに、本明細書で説明される要素のうちの多くは、個別の若しくは分散されたコンポーネントとして、又は他のコンポーネントと併せて、並びに任意の適切な組み合わせ及び場所で実装され得る機能的エンティティである。本明細書においてエンティティによって実行されていると説明される様々な機能は、ハードウェア、ファームウェア、及び/又はソフトウェアによって実行され得る。例えば、メモリに記憶された命令を実行するプロセッサによって、様々な機能が実行され得る。
【0174】
図14の車両1200のコンポーネント、特徴、及びシステムの各々は、バス1202を介して接続されているものとして示されている。バス1202には、コントローラ・エリア・ネットワーク(CAN)データ・インターフェース(或いは、本明細書では「CANバス」とも呼ぶ)が含まれ得る。CANは、車両1200内のネットワークであり、ブレーキの作動、加速、制動、ステアリング、フロントガラスのワイパなど、車両1200の様々な特徴及び機能の制御に役立つように使用され得る。CANバスは、数十又は数百のノードを有するように構成され得る。各々、それ自体の固有の識別子(例えば、CAN ID)を有している。CANバスは、ハンドルの角度、対地速度、エンジンの毎分回転数(RPM:Revolusions Per Minute)、ボタン位置、及び/又は他の車両ステータス・インジケータを見つけるために読み取ることができる。CANバスはASIL Bに準拠している場合がある。
【0175】
本明細書では、バス1202はCANバスであるものとして説明されているが、これは限定を意図したものではない。例えば、CANバスに加えて又はその代わりに、FlexRay及び/又はイーサネット(登録商標)を使用することができる。加えて、バス1202を表すために1つの線が使用されているが、これは、限定を意図したものではない。例えば、1つ又は複数のCANバス、1つ又は複数のFlexRayバス、1つ又は複数のイーサネット(登録商標)・バス、及び/又は異なるプロトコルを使用する1つ又は複数の他のタイプのバスを含み得る、任意の数のバス1202があってもよい。いくつかの実例では、2つ以上のバス1202を使用して異なる機能を実行するか、及び/又は冗長性のために使用することができる。例えば、第1のバス1202を衝突回避機能に使用し、第2のバス1202を作動制御に使用することができる。いずれの実例でも、各バス1202は車両1200のどのコンポーネントとも通信することができ、2つ以上のバス1202が同じコンポーネントと通信することもできる。いくつかの実例では、各SoC1204、各コントローラ1236、及び/又は車両内の各コンピュータは、同じ入力データ(例えば、車両1200のセンサからの入力)にアクセスすることができ、また、CANバスなどの共通バスに接続され得る。
【0176】
車両1200には、
図12に関して本明細書に説明されているように、1つ又は複数のコントローラ1236が含まれ得る。コントローラ1236は、様々な機能に使用され得る。コントローラ1236は、車両1200の他の様々なコンポーネント及びシステムのいずれにも結合することができ、車両1200の制御、車両1200の人工知能、車両1200のインフォテインメントなどに使用され得る。
【0177】
車両1200には、システム・オン・チップ(SoC)1204が含まれ得る。SoC1204には、CPU1206、GPU1208、プロセッサ1210、キャッシュ1212、アクセラレータ1214、データ・ストア1216、及び/又は図示されていない他のコンポーネント及び特徴が含まれ得る。SoC1204は、様々なプラットフォーム及びシステムで車両1200を制御するために使用することができる。例えば、SoC1204は、1つ又は複数のサーバ(例えば、
図15のサーバ1278)からネットワーク・インターフェース1224を介してマップ・リフレッシュ及び/又は更新を取得し得るHDマップ1222を有するシステム(例えば、車両1200のシステム)において組み合わせることができる。
【0178】
CPU1206には、CPUクラスタ又はCPUコンプレックス(或いは、本明細書では、「CCPLEX」とも呼ぶ)が含まれ得る。CPU1206には、複数のコア及び/又はL2キャッシュが含まれ得る。例えば、いくつかの実施例では、CPU1206には、コヒーレントなマルチプロセッサ構成で8つのコアが含まれていてもよい。いくつかの実施例では、CPU1206には、4つのデュアルコア・クラスタが含まれていてもよく、各クラスタに専用のL2キャッシュ(例えば、2MBのL2キャッシュ)がある。CPU1206(例えば、CCPLEX)は、CPU1206のクラスタの任意の組み合わせを任意の所与の時間にアクティブにできるように、同時クラスタ操作をサポートするように構成され得る。
【0179】
CPU1206には、次の特徴のうちの1つ又は複数を含む電力管理機能を実装することができる:個々のハードウェア・ブロックは、動的電力を節約するために、アイドル時に自動的にクロックゲートされ得る、各コア・クロックは、WFI/WFE命令の実行によりコアがアクティブに命令を実行していない場合、ゲートされ得る、各コアは独立してパワーゲートされ得る、各コア・クラスタは、すべてのコアがクロックゲート又はパワーゲートされている場合、独立してクロックゲートされ得る、及び/又は各コア・クラスタは、すべてのコアがパワーゲートされている場合、独立してパワーゲートされ得る。CPU1206はさらに、電力状態を管理するための拡張アルゴリズムを実装することができる。この場合、許可される電力状態と予想されるウェイクアップ時間が指定され、ハードウェア/マイクロコードがコア、クラスタ、及びCCPLEXの入るべき最適な電力状態を判断する。処理コアは、作業をマイクロコードにオフロードして、ソフトウェアでの簡素化された電力状態エントリ・シーケンスをサポートすることができる。
【0180】
GPU1208には、統合GPU(或いは、本明細書では「iGPU」とも呼ぶ)が含まれ得る。GPU1208は、プログラム可能であり、並列ワークロードに効率的であり得る。いくつかの実例では、GPU1208は、拡張テンソル命令セットを使用する場合がある。GPU1208には、1つ又は複数のストリーミング・マイクロプロセッサが含まれ得る。各ストリーミング・マイクロプロセッサには、L1キャッシュ(例えば、少なくとも96KBのストレージ容量を有するL1キャッシュ)が含まれている場合があり、また、ストリーミング・マイクロプロセッサのうちの2つ以上がL2キャッシュ(例えば、512KBのストレージ容量を有するL2キャッシュ)を共有する場合がある。いくつかの実施例では、GPU1208には、少なくとも8つのストリーミング・マイクロプロセッサが含まれ得る。GPU1208は、コンピュータベースのアプリケーション・プログラミング・インターフェース(API:Application Programming Interface)を使用することができる。また、GPU1208は、1つ又は複数の並列コンピューティング・プラットフォーム及び/又はプログラミング・モデル(例えば、NVIDIAのCUDA)を使用することができる。
【0181】
GPU1208は、自動車及び組み込み使用事例での最高のパフォーマンスのために電力最適化され得る。例えば、GPU1208は、フィン電界効果トランジスタ(FinFET:Fin Field-Effect Transistor)上で製作され得る。しかしながら、これは、限定を意図したものではなく、GPU1208は他の半導体製造プロセスを使用して製作することができる。各ストリーミング・マイクロプロセッサには、複数のブロックに区分化された多数の混合精度処理コアを組み込むことができる。例えば、また、限定されることなく、64個のPF32コアと32個のPF64コアを4つの処理ブロックに区分化することができる。このような実例では、各処理ブロックには、16個のFP32コア、8個のFP64コア、16個のINT32コア、深層学習行列演算のための2つの混合精度NVIDIAテンソル・コア、L0命令キャッシュ、ワープ・スケジューラ、ディスパッチ・ユニット、及び/又は64KBのレジスタ・ファイルが割り当てられ得る。また、ストリーミング・マイクロプロセッサには、計算及びアドレス指定計算の混合を有するワークロードの効率的な実行を提供するための独立した並行の整数及び浮動小数点データ経路が含まれている場合がある。ストリーミング・マイクロプロセッサには、並列スレッド間のより細かい細粒度の同期及び連携を可能にするために、独立したスレッド・スケジューリング能力が含まれている場合がある。ストリーミング・マイクロプロセッサには、プログラミングを単純化しながらパフォーマンスを向上させるために、組み合わされたL1データ・キャッシュ及び共有メモリ・ユニットが含まれ得る。
【0182】
GPU1208には、いくつかの実例では、約900GB/秒のピーク・メモリ帯域幅を提供するために、高帯域幅メモリ(HBM:High Bandwidth Memory)及び/又は16GB HBM2メモリ・サブシステムが含まれ得る。いくつかの実例では、HBMメモリに加えて又はその代わりに、グラフィックス・ダブル・データ・レート・タイプ5同期ランダム・アクセス・メモリ(GDDR5:Graphics Double Data Rate Type Five Synchronous Random-Access Memory)などの同期グラフィックス・ランダム・アクセス・メモリ(SGRAM:Synchronous Graphics Random-Access Memory)を使用することができる。
【0183】
GPU1208には、アクセス・カウンタを含む統一されたメモリ技術が含まれて、メモリ・ページに最も頻繁にアクセスするプロセッサへのそれらのメモリ・ページのより正確な移動が可能にされ、これにより、プロセッサ間で共有される記憶範囲の効率を向上させることができる。いくつかの実例では、アドレス変換サービス(ATS:Address Translation Service)サポートを使用して、GPU1208がCPU1206のページ・テーブルに直接アクセスできるようにすることができる。このような実例では、GPU1208のメモリ管理ユニット(MMU:Memory Management Unit)がミスを経験すると、アドレス変換要求がCPU1206に送信され得る。これに対応して、CPU1206は、アドレスの仮想対物理マッピングのためのそのページ・テーブルを調べることができ、変換をGPU1208に送り返す。したがって、統一されたメモリ技術は、CPU1206とGPU1208の両方のメモリに単一の統一された仮想アドレス空間を可能にすることができ、これにより、GPU1208のプログラミングとアプリケーションのGPU1208へのポーティングが単純化される。
【0184】
また、GPU1208には、GPU1208が他のプロセッサのメモリにアクセスする頻度を記録できるアクセス・カウンタが含まれ得る。アクセス・カウンタは、ページに最も頻繁にアクセスするプロセッサの物理メモリにメモリ・ページが移動することを確実にするのに役立ち得る。
【0185】
SoC1204には、本明細書に説明されているものを含めて任意の数のキャッシュ1212が含まれ得る。例えば、キャッシュ1212には、CPU1206とGPU1208の両方に利用可能であるL3キャッシュ(例えば、CPU1206とGPU1208の両方に接続されている)が含まれ得る。キャッシュ1212には、キャッシュ・コヒーレンス・プロトコル(例えば、MEI、MESI、MSIなど)を使用するなどして、線の状態を記録できるライトバック・キャッシュが含まれ得る。実施例に応じて、L3キャッシュは4MB以上が含まれ得るが、より小さいキャッシュ・サイズを使用してもよい。
【0186】
SoC1204には、DNNの処理など、車両1200の様々なタスク又は操作のいずれかに関して処理を実行する際に活用できる算術論理演算ユニット(ALU:Arithmetic Logic Unit)が含まれ得る。また、SoC1204には、システム内で数学操作を実行するための浮動小数点演算ユニット(FPU:Floating Point Unit)、又は他の数学コプロセッサ若しくは数値演算コプロセッサ・タイプが含まれていてもよい。例えば、SoC104には、CPU1206及び/又はGPU1208内の実行ユニットとして統合された1つ又は複数のFPUが含まれていてもよい。
【0187】
SoC1204には、1つ又は複数のアクセラレータ1214(例えば、ハードウェア・アクセラレータ、ソフトウェア・アクセラレータ、又はこれらの組み合わせ)が含まれ得る。例えば、SoC1204には、最適化されたハードウェア・アクセラレータ及び/又は大きなオンチップ・メモリが含まれ得るハードウェア・アクセラレーション・クラスタが含まれ得る。大きなオンチップ・メモリ(例えば、SRAMの4MB)は、ハードウェア・アクセラレーション・クラスタがニューラル・ネットワーク及び他の計算を高速化することを可能にし得る。ハードウェア・アクセラレーション・クラスタを使用して、GPU1208を補完し、且つGPU1208のタスクの一部を(例えば、他のタスクを実行するためにGPU1208のより多くのサイクルを解放するために)オフロードすることができる。一実例として、アクセラレータ1214は、加速に適しているように十分に安定している対象のワークロード(例えば、知覚、畳み込みニューラル・ネットワーク(CNN:Convolutional Neural Network)など)に使用され得る。「CNN」という用語には、本明細書で使用される場合、領域ベースの又は領域畳み込みニューラル・ネットワーク(RCNN:Regional Convolutional Neural Network)及び(例えば、オブジェクト検出に使用されるような)高速RCNNを含む、あらゆるタイプのCNNが含まれ得る。
【0188】
アクセラレータ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データ・タイプをサポートするなどの単一インスタンス畳み込み機能、並びにポストプロセッサ機能を含む、いくつかの機能を実行することができる。
【0189】
DLAは、様々な機能のうちのいずれかの処理済みデータ又は未処理データに、ニューラル・ネットワーク、特にCNNを迅速且つ効率的に実行することができる。CNNには、例えば、カメラ・センサからのデータを使用する物体識別及び検出のためのCNN、カメラ・センサからのデータを使用する距離推定のためのCNN、マイクからのデータを使用する緊急車両検出及び識別及び検出のためのCNN、カメラ・センサからのデータを使用する顔認識及び車両所有者識別のためのCNN、並びに/又はセキュリティ及び/若しくは安全関連イベントのためのCNNを含むが、これらに限定されない。
【0190】
DLAは、GPU1208の任意の機能を実行することができ、また、推論アクセラレータを使用することによって、例えば、設計者は、任意の機能のためにDLA又はGPU1208のいずれかを対象にすることができる。例えば、設計者は、CNNの処理と浮動小数点演算をDLAに集中させ、他の機能をGPU1208及び/又は他のアクセラレータ1214に委任することができる。
【0191】
アクセラレータ1214(例えば、ハードウェア・アクセラレーション・クラスタ)には、プログラマブル・ビジョン・アクセラレータ(PVA:Programmable Vision Accelerator)が含まれ得る。これは、或いは、本明細書では、コンピュータ・ビジョン・アクセラレータと呼ばれることもある。PVAは、高度運転者支援システム(ADAS)、自律運転、並びに/又は拡張現実(AR:Augumented Reality)及び/若しくは仮想現実(VR:Virtual Reality)アプリケーション用のコンピュータ・ビジョン・アルゴリズムを加速するように設計及び構成され得る。PVAは、パフォーマンスと柔軟性とのバランスをもたらすことができる。例えば、各PVAには、例えば、また、限定されることなく、任意の数の縮小命令セット・コンピュータ(RISC:Reduced Instruction Set Computer)コア、ダイレクト・メモリ・アクセス(DMA)、及び/又は任意の数のベクトル・プロセッサが含まれ得る。
【0192】
RISCコアは、画像センサ(例えば、本明細書に説明されているいずれかのカメラの画像センサ)、画像信号プロセッサなどと対話し得る。RISCコアの各々には、任意の量のメモリが含まれ得る。RISCコアは、実施例に応じて、いくつかのプロトコルのうちのいずれかを使用することができる。いくつかの実例では、RISCコアは、リアルタイム・オペレーティング・システム(RTOS:Real-Time Operating System)を実行することができる。RISCコアは、1つ又は複数の集積回路デバイス、特定用途向け集積回路(ASIC:Application Specific Integrated Circuit)、及び/又はメモリ・デバイスを使用して実装され得る。例えば、RISCコアには命令キャッシュ及び/又は密結合RAMが含まれ得る。
【0193】
DMAは、PVAのコンポーネントが、CPU1206とは無関係に、システム・メモリにアクセスすることを可能にし得る。DMAは、多次元アドレス指定及び/又は循環アドレス指定をサポートすることを含むが、これに限定されない、PVAに最適化を提供するために使用される任意の数の特徴をサポートすることができる。いくつかの実例では、DMAは、最大6以上の次元(これには、ブロック幅、ブロック高さ、ブロック深さ、水平ブロック・ステッピング、垂直ブロック・ステッピング、及び/又は深さステッピングが含まれ得る)のアドレス指定をサポートすることができる。
【0194】
ベクトル・プロセッサは、コンピュータ・ビジョン・アルゴリズムのプログラミングを効率的且つ柔軟に実行し、信号処理能力を提供するように設計され得るプログラム可能なプロセッサであり得る。いくつかの実例では、PVAには、PVAコアと2つのベクトル処理サブシステム・パーティションとが含まれている場合がある。PVAコアには、プロセッサ・サブシステム、DMAエンジン(例えば、2つのDMAエンジン)、及び/又は他の周辺機器が含まれていてもよい。ベクトル処理サブシステムは、PVAのプライマリ処理エンジンとして動作し、ベクトル処理ユニット(VPU:Vector Processing Unit)、命令キャッシュ、及び/又はベクトル・メモリ(例えば、VMEM)が含まれ得る。VPUコアには、単一命令複数データ(SIMD:Single Instruction,Multiple Data)、超長命令語(VLIW:Very Long Instruction Word)デジタル信号プロセッサなどのデジタル信号プロセッサが含まれ得る。SIMDとVLIWとの組み合わせは、スループット及び速度を高めることができる。
【0195】
ベクトル・プロセッサの各々には、命令キャッシュが含まれ得、また、専用メモリに結合され得る。結果として、いくつかの実例では、ベクトル・プロセッサの各々は、他のベクトル・プロセッサとは無関係に実行するように構成され得る。他の実例では、特定のPVAに含まれるベクトル・プロセッサは、データ並列性を採用するように構成され得る。例えば、いくつかの実施例では、単一のPVAに含まれる複数のベクトル・プロセッサが、同じコンピュータ・ビジョン・アルゴリズムを、画像の異なる領域に実行することができる。他の実例では、特定のPVAに含まれるベクトル・プロセッサが、同じ画像に異なるコンピュータ・ビジョン・アルゴリズムを同時に実行するか、又は一連の画像若しくは画像の部分に異なるアルゴリズムを実行することができる。特に、任意の数のPVAをハードウェア・アクセラレーション・クラスタに含めることができ、また、任意の数のベクトル・プロセッサをPVAの各々に含めることができる。また、PVAには、システム全体の安全性を高めるために、追加のエラー訂正コード(ECC)メモリが含まれていてもよい。
【0196】
アクセラレータ1214(例えば、ハードウェア・アクセラレーション・クラスタ)には、アクセラレータ1214に高帯域幅、低レイテンシSRAMを提供するためにコンピュータ・ビジョン・ネットワーク・オンチップ及びSRAMが含まれ得る。いくつかの実例では、オンチップ・メモリには、例えば、また、限定されることなく、PVAとDLAの両方からアクセス可能であり得る8つのフィールド構成可能なメモリ・ブロックから成る、少なくとも4MBのSRAMが含まれ得る。メモリ・ブロックの各ペアには、高度周辺バス(APB:Advanced Peripheral Bus)インターフェース、構成回路、コントローラ、及びマルチプレクサが含まれ得る。任意のタイプのメモリを使用できる。PVA及びDLAは、PVA及びDLAにメモリへの高速アクセスを提供するバックボーンを介してメモリにアクセスすることができる。バックボーンには、(例えば、APBを使用して)PVA及びDLAをメモリに相互接続するコンピュータ・ビジョン・ネットワーク・オンチップが含まれ得る。
【0197】
コンピュータ・ビジョン・ネットワーク・オンチップには、PVAとDLAの両方が作動可能信号及び有効信号を提供することを、任意の制御信号/アドレス/データを送信する前に判断するインターフェースが含まれ得る。このようなインターフェースは、制御信号/アドレス/データを送信するための別個のフェーズ及び個別のチャネル、並びに連続データ転送のためのバーストタイプ通信を提供することができる。このタイプのインターフェースは、ISO26262又はIEC61508規格に準拠していてよいが、他の規格及びプロトコルを使用することもできる。
【0198】
いくつかの実例では、SoC1204には、2018年8月10日に出願された米国特許出願第16/101,232号に記載されているようなリアルタイム・レイトレーシング・ハードウェア・アクセラレータが含まれ得る。リアルタイム・レイトレーシング・ハードウェア・アクセラレータは、RADAR信号解釈のための、音響伝播合成及び/又は分析のための、SONARシステムのシミュレーションのための、一般波伝播シミュレーションのための、ローカリゼーション及び/又は他の機能を目的とするLIDARデータに対する比較のための、並びに/或いは他の使用のための、リアルタイム視覚化シミュレーションを生成するために、(例えば、世界モデル内の)物体の位置及び規模を迅速且つ効率的に判断するために使用され得る。いくつかの実施例では、1つ又は複数のツリー・トラバーサル・ユニット(TTU:Tree Traversal Unit)を使用して、1つ又は複数のレイトレーシング関連の操作を実行することができる。
【0199】
アクセラレータ1214(例えば、ハードウェア・アクセラレータ・クラスタ)には、自律運転のための幅広い用途がある。PVAは、ADAS及び自律車両の主要な処理段階に使用できるプログラム可能なビジョン・アクセラレータであり得る。PVAの能力は、低電力及び低レイテンシで、予測可能な処理を必要とするアルゴリズム・ドメインに適している。つまり、PVAは、低レイテンシ及び低電力とともに予測可能な実行時間を必要とする、小さなデータ・セット上でも、半高密度の又は高密度の通常の計算で良好に機能する。したがって、自律車両のプラットフォームとの関連で、PVAは、物体検出及び整数計算での操作において効率的であるので、クラシック・コンピュータ・ビジョン・アルゴリズムを実行するように設計されている。
【0200】
例えば、本技術の一実施例によれば、PVAはコンピュータ・ステレオ・ビジョンを実行するために使用される。いくつかの実例では、半グローバル・マッチングベースのアルゴリズムを使用できるが、これは、限定を意図したものではない。レベル3~5の自律運転のための多くの用途では、動き推定/ステレオ・マッチング(例えば、ストラクチャ・フロム・モーション、歩行者認識、車線検出など)がオンザフライで必要である。PVAは、2つの単眼カメラからの入力に対してコンピュータ・ステレオ・ビジョン機能を実行することができる。
【0201】
いくつかの実例では、PVAを使用して高密度オプティカル・フローを実行することができる。例えば、PVAを使用して未加工のRADARデータを(例えば、4D高速フーリエ変換を使用して)処理して、次のRADARパルスを発する前に処理済みのRADAR信号を提供することができる。他の実例では、PVAは、例えば、未加工の飛行時間データを処理して処理済みの飛行時間データを提供することによって、飛行時間の深度処理に使用される。
【0202】
DLAを使用して、例えば、各物体検出の信頼の尺度を出力するニューラル・ネットワークを含む任意のタイプのネットワークを実行して、制御及び運転の安全性を高めることができる。このような信頼値は、確率として、又は他の検出と比較して各検出の相対的な「重み」を提供するものとして解釈され得る。この信頼値により、システムは、どの検出が、誤検出ではなく、真の検出と見なされるべきかに関するさらなる判断を行うことができる。例えば、システムは、信頼の閾値を設定し、閾値を超える検出のみを真の検出と見なすことができる。自動緊急ブレーキ(AEB:Automatic Emergency Braking)システムでは、誤検出は、車両に自動的に緊急ブレーキを実行させるが、これは明らかに望ましくない。したがって、最も信頼のある検知のみがAEBのトリガと見なされるべきである。DLAは、信頼値を回帰するためにニューラル・ネットワークを実行することができる。ニューラル・ネットワークは、境界ボックスの次元、(例えば、別のサブシステムから)取得したグラウンド・プレーンの推定値、ニューラル・ネットワーク及び/又は他のセンサ(例えば、LIDARセンサ1264又はRADARセンサ1260)から取得された車両1200の向き、距離、物体の3D位置の推定値と相関する慣性測定ユニット(IMU)センサ1266の出力などの少なくともいくつかのパラメータのサブセットを入力として取る。
【0203】
SoC1204には、データ・ストア1216(例えば、メモリ)が含まれ得る。データ・ストア1216は、SoC1204のオンチップ・メモリであり得、GPU及び/又はDLAで実行されるニューラル・ネットワークを記憶することができる。いくつかの実例では、データ・ストア1216は、冗長性及び安全性のためにニューラル・ネットワークの複数のインスタンスを記憶するのに十分な大きさの容量を有し得る。データ・ストア1216には、L2又はL3キャッシュ1212が含まれ得る。データ・ストア1216への参照には、本明細書に説明されているPVA、DLA、及び/又は他のアクセラレータ1214に関連付けられたメモリへの参照が含まれ得る。
【0204】
SoC1204には、1つ又は複数のプロセッサ1210(例えば、組み込みプロセッサなど)が含まれ得る。プロセッサ1210には、ブート電力及び管理機能及び関連のセキュリティ強化を処理するために、専用プロセッサであり得るブート及び電力管理プロセッサと、サブシステムとが含まれ得る。ブート及び電力管理プロセッサは、SoC1204のブート・シーケンスの一部であり得、実行時間電力管理サービスを提供し得る。ブート電力及び管理プロセッサは、クロック及び電圧のプログラミング、システムの低電力状態遷移における支援、SoC1204の熱及び温度センサの管理、及び/又はSoC1204の電力状態の管理を提供することができる。各温度センサは、その出力周波数が温度に比例するリング発振器として実装でき、SoC1204は、リング発振器を使用してCPU1206、GPU1208、及び/又はアクセラレータ1214の温度を検出することができる。温度が閾値を超えていると判定された場合、ブート及び電力管理プロセッサは、温度障害ルーチンに入り、SoC1204を低電力状態にするか、及び/又は車両1200を安全停止まで運転代行モード(chauffeur to safe-stop mode)にする(例えば、車両1200を安全停止させる)ことができる。
【0205】
プロセッサ1210にはさらに、オーディオ処理エンジンとして機能し得る組み込みプロセッサのセットが含まれ得る。オーディオ処理エンジンは、複数のインターフェースを介したマルチチャネル・オーディオの完全なハードウェア・サポートと、オーディオI/Oインターフェースの広く柔軟な範囲とを可能にするオーディオ・サブシステムであり得る。いくつかの実例では、オーディオ処理エンジンは、専用RAMを有するデジタル信号プロセッサを有する専用プロセッサ・コアである。
【0206】
プロセッサ1210にはさらに、低電力センサ管理及びウェイク使用事例をサポートするために必要なハードウェア特徴を提供できる常時オンのプロセッサ・エンジンが含まれ得る。常時オンのプロセッサ・エンジンには、プロセッサ・コア、密結合RAM、サポートする周辺機器(例えば、タイマ及び割り込みコントローラ)、様々なI/Oコントローラ周辺機器、及びルーティング論理が含まれ得る。
【0207】
プロセッサ1210にはさらに、自動車アプリケーションの安全管理を処理する専用のプロセッサ・サブシステムを含む安全クラスタ・エンジンが含まれ得る。安全クラスタ・エンジンには、2つ以上のプロセッサ・コア、密結合RAM、サポートする周辺機器(例えば、タイマ、割り込みコントローラなど)、及び/又はルーティング論理が含まれ得る。安全モードでは、2つ以上のコアは、ロックステップ・モードで動作し、それらの動作間の差異を検出する比較論理を有する単一のコアとして機能し得る。
【0208】
プロセッサ1210にはさらに、リアルタイム・カメラ管理を処理するための専用プロセッサ・サブシステムが含まれ得るリアルタイム・カメラ・エンジンが含まれ得る。
【0209】
プロセッサ1210にはさらに、カメラ処理パイプラインの一部であるハードウェア・エンジンである画像信号プロセッサが含まれ得るハイ・ダイナミック・レンジ信号プロセッサが含まれ得る。
【0210】
プロセッサ1210には、プレイヤ・ウインドウのための最終画像を生成するためにビデオ再生アプリケーションによって必要とされるビデオ後処理機能を実装する処理ブロック(例えば、マイクロプロセッサ上に実装される)であり得るビデオ画像合成器が含まれ得る。ビデオ映像合成器は、ワイドビュー・カメラ1270、サラウンド・カメラ1274、及び/又はキャビン内モニタリング・カメラ・センサにレンズ歪み補正を実行することができる。キャビン内モニタリング・カメラ・センサは、好ましくは、キャビン内イベントを識別し、それに応じて応答するように構成されている、高度なSoCの別のインスタンス上で実行するニューラル・ネットワークによってモニタリングされる。キャビン内システムは、読唇術を実行して、携帯電話サービスをアクティブにしたり、電話をかけたり、電子メールを口述して書き取らせたり、車両の目的地を変更したり、車両のインフォテインメント・システム及び設定をアクティブにしたり若しくは変更したり、又は音声でアクティブにされるウェブ・サーフィンを提供したりすることができる。特定の機能は、車両が自律モードで動作している場合にのみ運転者が利用することができ、それ以外の場合は無効にされる。
【0211】
ビデオ画像合成器には、空間的ノイズ低減と時間的ノイズ低減の両方のために、強化された時間的ノイズ低減が含まれ得る。例えば、ビデオで動きが発生する場合、ノイズ低減は、空間的情報に適切に重み付けし、隣接するフレームから提供される情報の重みを減少させる。画像又は画像の一部分に動きが含まれていない場合、ビデオ画像合成器によって実行される時間的ノイズ低減は、前の画像からの情報を使用して、現在の画像内のノイズを低減することができる。
【0212】
ビデオ画像合成器はまた、入力ステレオ・レンズ・フレームでステレオ調整を実行するように構成され得る。ビデオ画像合成器はさらに、オペレーティング・システム・デスクトップが使用中であるときに、ユーザ・インターフェース合成に使用することができ、GPU1208は、新しい表面を連続的にレンダリングする必要はない。GPU1208の電源がオンで3Dレンダリングをアクティブに実行している場合でも、ビデオ画像合成器を使用してGPU1208をオフロードして、パフォーマンス及び応答性を向上させることができる。
【0213】
SoC1204にはさらに、カメラからのビデオ及び入力を受信するためのモバイル・インダストリ・プロセッサ・インターフェース(MIPI:Mobile Industry Processor Interface)カメラ・シリアル・インターフェース、高速インターフェース、並びに/又はカメラ及び関連ピクセル入力機能に使用できるビデオ入力ブロックが含まれ得る。SoC1204にはさらに、ソフトウェアによって制御され得、特定の役割にコミットされていないI/O信号を受信するために使用され得る入力/出力コントローラが含まれ得る。
【0214】
SoC1204にはさらに、周辺機器、オーディオ・コーデック、電力管理、及び/又は他のデバイスとの通信を可能にするために、幅広い周辺機器インターフェースが含まれ得る。SoC1204を使用して、(例えば、ギガビット・マルチメディア・シリアル・リンク及びイーサネット(登録商標)経由で接続されている)カメラからのデータ、センサ(例えば、イーサネット(登録商標)経由で接続され得るLIDARセンサ1264、RADARセンサ1260など)、バス1202からのデータ(例えば、車両1200の速度、ハンドルの位置など)、(例えば、イーサネット(登録商標)又はCANバス経由で接続されている)GNSSセンサ1258からのデータを処理することができる。SoC1204にはさらに、独自のDMAエンジンが含まれ得る、CPU1206をルーチン・データ管理タスクから解放するために使用され得る、専用の高性能マス・ストレージ・コントローラが含まれ得る。
【0215】
SoC1204は、自動化レベル3~5に及ぶ柔軟なアーキテクチャを有するエンド・ツー・エンド・プラットフォームであり、これにより、多様性及び冗長性のためのコンピュータ・ビジョン及びADAS手法を活用し且つ効率的に使用し、深層学習ツールとともに、柔軟で信頼性のある運転ソフトウェア・スタックのプラットフォームを提供する包括的な機能安全アーキテクチャを提供することができる。SoC1204は、従来のシステムよりも高速で信頼性が高く、さらにエネルギー効率及び空間効率に優れている場合がある。例えば、アクセラレータ1214は、CPU1206、GPU1208、及びデータ・ストア1216と組み合わせると、レベル3~5の自律車両に高速で効率的なプラットフォームを提供することができる。
【0216】
したがって、本技術は、従来のシステムでは実現できない能力及び機能を提供する。例えば、コンピュータ・ビジョン・アルゴリズムはCPU上で実行され得る。コンピュータ・ビジョン・アルゴリズムは、様々なビジュアル・データにわたって様々な処理アルゴリズムを実行するために、Cプログラミング言語などの高水準プログラミング言語を使用して構成され得る。しかしながら、CPUは、例えば、実行時間及び電力消費量に関連するものなど、多くのコンピュータ・ビジョン・アプリケーションのパフォーマンス要件を満たすことができないことが多い。特に、多くのCPUは、車両内ADASアプリケーションの要件であり、且つ実用レベル3~5の自律車両の要件である、複合物体検出アルゴリズムをリアルタイムで実行することができない。
【0217】
従来のシステムとは対照的に、CPUコンプレックス、GPUコンプレックス、及びハードウェア・アクセラレーション・クラスタを提供することによって、本明細書で説明する本技術は、複数のニューラル・ネットワークが同時に及び/又は連続して実行されることを可能にし、且つ結果を組み合わせてレベル3~5の自律運転機能を有効にすることを可能にする。例えば、DLA又はdGPU(例えば、GPU1220)上で実行されるCNNには、テキスト及び単語認識が含まれており、これにより、スーパーコンピュータが、ニューラル・ネットワークが具体的にはトレーニングされていない標識を含む、交通標識を読み取って理解することができる。DLAにはさらに、標識を識別し、解釈し、及び意味論的理解を提供でき、且つその意味論的理解をCPUコンプレックス上で実行されている経路計画モジュールに渡すことができるニューラル・ネットワークが含まれ得る。
【0218】
別の実例として、レベル3、4、又は5の運転に必要とされるように、複数のニューラル・ネットワークを同時に実行することができる。例えば、電光を伴う「注意:点滅光は凍結状態を示す」から成る警告標識が、複数のニューラル・ネットワークによって独立して又は集合的に解釈される場合がある。標識自体は、第1のデプロイされたニューラル・ネットワーク(例えば、トレーニングされているニューラル・ネットワーク)によって交通標識として識別され得、「点滅光は凍結状態を示す」というテキストは、第2のデプロイされたニューラル・ネットワークによって解釈され得る。第2のデプロイされたニューラル・ネットワークは、車両の経路計画ソフトウェア(好ましくはCPUココンプレックス上で実行している)に、点滅光が検知される場合は凍結状態が存在することを知らせる。点滅光は、第3のデプロイされたニューラル・ネットワークを複数のフレームで動作させて、車両の経路計画ソフトウェアに点滅光の存在(又は不在)を知らせることによって識別され得る。3つのニューラル・ネットワークはすべて、DLA内及び/又はGPU1208上などで同時に実行できる。
【0219】
いくつかの実例では、顔認識及び車両所有者の識別のためのCNNが、カメラ・センサからのデータを使用して、車両1200の認可された運転者及び/又は所有者の存在を識別することができる。常時オンのセンサ処理エンジンを使用して、所有者が運転者ドアに近づいたときに車両のロックを解除して、ライトを点け、また、セキュリティ・モードでは所有者が車両を離れたときに車両が動作しないようにすることができる。このようにして、SoC1204は、盗難及び/又はカージャックに対するセキュリティを提供する。
【0220】
別の実例では、緊急車両検出及び識別のためのCNNが、マイク1296からのデータを使用して、緊急車両サイレンを検出及び識別することができる。一般的な分類器を使用してサイレンを検出し、手動で特徴を抽出する従来のシステムとは対照的に、SoC1204は、環境音及び都市音の分類だけでなく、視覚データの分類にもCNNを使用している。好ましい実施例では、DLA上で実行されるCNNは、緊急車両の相対的終速度を(例えば、ドップラー効果を使用することによって)識別するようにトレーニングされている。CNNはまた、GNSSセンサ1258によって識別されるように、車両が動作している地域に固有の緊急車両を識別するようにトレーニングされていてもよい。したがって、例えば、欧州で動作しているときは、CNNは欧州のサイレンを検出しようとし、合衆国では、CNNは北米のサイレンのみを識別しようとする。緊急車両が検出されると、制御プログラムを使用して緊急車両安全ルーチンを実行し、緊急車両が通過するまで、超音波センサ1262に支援されて、車両を減速させ、道路の脇に寄せ、車両を駐車し、及び/又は車両をアイドリングさせることができる。
【0221】
車両には、高速インターコネクト(例えば、PCIe)を介してSoC1204に結合され得るCPU1218(例えば、ディスクリートCPU、即ち、dCPU)が含まれ得る。例えば、CPU1218にはX86プロセッサが含まれ得る。CPU1218を使用して、ADASセンサとSoC1204との間で不整合である可能性のある結果の調停、並びに/又はコントローラ1236及び/若しくはインフォテインメントSoC1230のステータス及び正常性のモニタリングなど、様々な機能のいずれかを実行することができる。
【0222】
車両1200には、高速インターコネクト(例えば、NVIDIAのNVLINK)を介してSoC1204に結合され得るGPU1220(例えば、ディスクリートGPU、即ち、dGPU)が含まれ得る。GPU1220は、冗長及び/又は異なるニューラル・ネットワークを実行することなどによって、追加の人工知能の機能を提供することができ、また、車両1200のセンサからの入力(例えば、センサ・データ)に基づいてニューラル・ネットワークをトレーニング及び/又は更新するために使用することができる。
【0223】
車両1200にはさらに、1つ又は複数のワイヤレス・アンテナ1226(例えば、携帯電話アンテナ、ブルートゥース・アンテナなど、異なる通信プロトコル用の1つ又は複数のワイヤレス・アンテナ)が含まれ得るネットワーク・インターフェース1224が含まれ得る。ネットワーク・インターフェース1224を使用して、クラウド(例えば、サーバ1278及び/又は他のネットワーク・デバイスを有する)、他の車両、及び/又はコンピューティング・デバイス(例えば、乗客のクライアント・デバイス)とのインターネット経由のワイヤレス接続を可能にすることができる。他の車両と通信するには、2つの車両間に直接リンクが確立されてもよいし、及び/又は間接リンクが確立されてもよい(例えば、ネットワーク間及びインターネット経由)。直接リンクは、車両間通信リンクを使用して提供することができる。車両間通信リンクは、車両1200に近接している車両(例えば、車両1200の前、横、及び/又は後ろにいる車両)に関する情報を車両1200に提供することができる。この機能は、車両1200の協調適応型クルーズ制御機能の一部であり得る。
【0224】
ネットワーク・インターフェース1224には、変調及び復調機能を提供し、コントローラ1236がワイヤレス・ネットワーク経由で通信することを可能にするSoCが含まれ得る。ネットワーク・インターフェース1224には、ベースバンドから無線周波数へのアップコンバージョン、及び無線周波数からベースバンドへのダウン・コンバージョンのための無線周波数フロント・エンドが含まれ得る。周波数コンバージョンは、よく知られているプロセスを用いて実行することができる、及び/又はスーパーヘテロダイン・プロセスを使用して実行することができる。いくつかの実例では、無線周波数フロント・エンド機能は、別個のチップによって提供され得る。ネットワーク・インターフェースには、LTE、WCDMA(登録商標)、UMTS、GSM、CDMA2000、ブルートゥース(登録商標)、ブルートゥースLE、Wi-Fi、Z-Wave、ジグビー、LoRaWAN、及び/又は他のワイヤレス・プロトコルを介する通信のためのワイヤレス機能が含まれ得る。
【0225】
車両1200にはさらに、外部(例えば、SoC1204の外部の)ストレージが含まれ得るデータ・ストア1228が含まれ得る。データ・ストア1228には、RAM、SRAM、DRAM、VRAM、フラッシュ、ハード・ディスク、並びに/又は少なくとも1ビットのデータを記憶し得る他のコンポーネント及び/若しくはデバイスなどの1つ又は複数のストレージ要素が含まれ得る。
【0226】
車両1200にはさらに、マッピング、知覚、占有グリッドの生成、及び/又は経路計画機能を支援するために、GNSSセンサ1258(例えば、GPS及び/又は支援付きGPSセンサ)が含まれ得る。例えば、イーサネット(登録商標)・ツー・シリアル(RS-232)ブリッジを有するUSBコネクタを使用するGPSを含むが、これに限定されない任意の数のGNSSセンサ1258を使用することができる。
【0227】
車両1200にはさらに、RADARセンサ1260が含まれ得る。RADARセンサ1260は、暗闇及び/又は厳しい気象条件でも長距離にある車両を検出するために車両1200によって使用され得る。RADAR機能安全レベルはASIL Bであり得る。RADARセンサ1260は、(例えば、RADARセンサ1260によって生成されたデータを送信するために)CAN及び/又はバス1202を使用して、物体追跡データを制御及び物体追跡データにアクセスすることができ、いくつかの実例では、未加工データにアクセスするためにイーサネット(登録商標)へのアクセスを有する。様々なRADARセンサ・タイプを使用することができる。例えば、また、限定されることなく、RADARセンサ1260は、前部、後部、及び側部のRADAR使用に適している場合がある。ある実例では、パルス・ドップラーRADARセンサが使用される。
【0228】
RADARセンサ1260には、狭視野で長距離、広視野で短距離、短距離側部カバレージなど、異なる構成が含まれ得る。いくつかの実例では、長距離RADARを適応型クルーズ制御機能に使用してもよい。長距離RADARシステムは、250mの範囲内など、2つ以上の独立したスキャンによって実現される広い視野を提供することができる。RADARセンサ1260は、静止している物体と動いている物体を区別するのに役立ち、緊急ブレーキ支援及び前方衝突警報のためにADASシステムによって使用され得る。長距離RADARセンサには、複数の(例えば、6以上の)固定RADARアンテナと高速CAN及びFlexRayインターフェースとを有するモノスタティック・マルチモーダルRADARが含まれ得る。6つのアンテナを用いる実例では、中央の4つのアンテナが、隣接する車線の往来からの干渉を最小限に抑えながら、より高速で車両1200の周囲を記録するように設計されている集束ビーム・パターンを作成し得る。他の2つのアンテナは視野を拡大することができ、車両1200がいる車線に入ってくる又はそこから出て行く車両をすばやく検出することを可能にする。
【0229】
中距離RADARシステムには、一実例として、最大1260m(前部)又は80m(後部)の範囲と、最大42度(前部)又は1250度(後部)の視野とが含まれ得る。短距離RADARシステムには、後部バンパの両端に取り付けられるように設計されたRADARセンサが含まれ得るが、これに限定されない。後部バンパの両端に取り付けられる場合、このようなRADARセンサシステムは、車両の後部及び隣にある死角を常にモニタリングする2つのビームを作成することができる。
【0230】
短距離RADARシステムは、死角検出及び/又は車線変更支援のためにADASシステムで使用され得る。
【0231】
車両1200にはさらに、超音波センサ1262が含まれ得る。超音波センサ1262は、車両1200の前部、背部、及び/又は側部に配置することができ、駐車支援並びに/又は占有グリッドの作成及び更新に使用することができる。様々な超音波センサ1262を使用することができ、異なる検出範囲(例えば、2.5m、4m)に異なる超音波センサ1262を使用することができる。超音波センサ1262は、ASIL Bの機能安全レベルで動作し得る。
【0232】
車両1200には、LIDARセンサ1264が含まれ得る。LIDARセンサ1264は、物体及び歩行者検出、緊急ブレーキ、衝突回避、及び/又は他の機能に使用することができる。LIDARセンサ1264は、機能安全レベルASIL Bであり得る。いくつかの実例では、車両1200には、(例えば、ギガビット・イーサネット(登録商標)・スイッチにデータを提供するために)イーサネット(登録商標)を使用し得る複数のLIDARセンサ1264(例えば、2個、4個、6個など)が含まれ得る。
【0233】
いくつかの実例では、LIDARセンサ1264は、360度の視野について物体及びその距離のリストを提供可能であり得る。市販されているLIDARセンサ1264の広告されている範囲は、約100mで、精度は2cm~3cmで、例えば、100Mbpsイーサネット(登録商標)接続のためのサポートがある場合がある。いくつかの実例では、1つ又は複数の非突出型のLIDARセンサ1264が使用され得る。このような実例では、LIDARセンサ1264は、車両1200の前部、後部、側部、及び/又はコーナーに埋め込まれ得る小型デバイスとして実装され得る。このような実例では、LIDARセンサ1264は、水平方向に最大120度、垂直方向に最大35度の視野を、低反射性物体でさえも200mの範囲で提供することができる。前部に取り付けられたLIDARセンサ1264は、45度~135度の水平視野について構成され得る。
【0234】
いくつかの実例では、3DフラッシュLIDARなどのLIDAR技術も使用され得る。3DフラッシュLIDARは、レーザーのフラッシュを送信源として使用し、約200mまでの車両の周囲を照明する。フラッシュLIDARユニットには、レーザー・パルスの通過時間と各ピクセルの反射光とを記録するレセプタが含まれている。これは、ひいては車両から物体までの範囲に対応する。フラッシュLIDARは、レーザー・フラッシュ毎に周囲の高精度で歪みのない画像が生成されることを可能にし得る。いくつかの実例では、車両1200の各側に1つずつ、4つのフラッシュLIDARセンサを配備することができる。使用可能な3DフラッシュLIDARシステムには、ファン以外の可動部品のないソリッドステート3Dステアリング・アレイLIDARカメラ(例えば、非スキャンLIDARデバイス)が含まれている。フラッシュLIDARデバイスは、フレーム毎に5ナノ秒クラスのI(アイ・セーフ)レーザー・パルスを使用し、反射されたレーザー光を3D範囲点群及び共登録された強度データの形でキャプチャすることができる。フラッシュLIDARを使用することによって、また、フラッシュLIDARは可動部品のないソリッドステート・デバイスであることから、LIDARセンサ1264はモーション・ブラー、振動、及び/又は衝撃の影響を受けにくくなり得る。
【0235】
車両にはさらに、IMUセンサ1266が含まれ得る。IMUセンサ1266は、いくつかの実例では、車両1200の後車軸の中央に設置することができる。IMUセンサ1266には、例えば、加速度計、磁力計、ジャイロスコープ、磁気コンパス、及び/又は他のセンサ・タイプが含まれ得るが、これらに限定されない。6軸アプリケーションなどのいくつかの実例では、IMUセンサ1266には、加速度計及びジャイロスコープが含まれ得るが、9軸アプリケーションでは、IMUセンサ1266には、加速度計、ジャイロスコープ、及び磁力計が含まれ得る。
【0236】
いくつかの実施例では、IMUセンサ1266は、マイクロ電気機械システム(MEMS:Micro-Electro-Mechanical System)慣性センサ、高感度GPS受信器、及び高度カルマン・フィルタリング・アルゴリズムを組み合わせて、位置、速度、及び姿勢の推定値を提供する、小型で高性能のGPS支援慣性航行システム(GPS/INS:GPS-Aided Inertial Navigation System)として実装され得る。したがって、いくつかの実例では、IMUセンサ1266は、GPSからIMUセンサ1266へ速度変化を直接観察して関連付けることで、磁気センサからの入力を必要とせずに車両1200が進行方向を推定することを可能にし得る。いくつかの実例では、IMUセンサ1266とGNSSセンサ1258とを、1つの統合ユニットに組み合わせることができる。
【0237】
車両には、車両1200内及び/又は車両1200の周りに置かれるマイク1296が含まれ得る。マイク1296は、特に緊急車両の検出及び識別に使用され得る。
【0238】
車両にはさらに、ステレオ・カメラ1268、ワイドビュー・カメラ1270、赤外線カメラ1272、サラウンド・カメラ1274、長距離及び/若しくは中距離カメラ1298、並びに/又は他のカメラ・タイプを含む、任意の数のカメラ・タイプが含まれ得る。カメラを使用して、車両1200の周囲全体の画像データをキャプチャすることができる。使用されるカメラのタイプは、車両1200の実施例及び要件によって異なり、また、任意の組み合わせのカメラ・タイプを使用して、車両1200の周囲に必要なカバレージを提供することができる。また、カメラの数は、実施例によって異なり得る。例えば、車両には6つのカメラ、7つのカメラ、10個のカメラ、12個のカメラ、及び/又は別の数のカメラが含まれている場合がある。このカメラは、一例として、また、限定されることなく、ギガビット・マルチメディア・シリアル・リンク(GMSL:Gigabit Multimedia Serial Link)及び/又はギガビット・イーサネット(登録商標)をサポートしていてもよい。カメラの各々については、
図12及び
図13に関して本明細書でより詳細に説明している。
【0239】
車両1200にはさらに、振動センサ1242が含まれ得る。振動センサ1242は、車軸など、車両のコンポーネントの振動を測定することができる。例えば、振動の変化は路面の変化を示す場合がある。別の実例では、2つ以上の振動センサ1242が使用される場合、振動の差を使用して路面の摩擦又は滑りの程度を判定することができる(例えば、振動の差が動力駆動の車軸と自由回転車軸との間にある場合)。
【0240】
車両1200にはADASシステム1238が含まれ得る。ADASシステム1238には、いくつかの実例では、SoCが含まれ得る。ADASシステム1238には、自律/適応/自動クルーズ制御(ACC:Autonomous/Adaptive/Automatic Cruise Control)、協調適応型クルーズ制御(CACC:Cooperative Adaptive Cruise Control)、前方衝突警報(FCW:Forward Crash Warning)、自動緊急ブレーキ(AEB)、車線逸脱警報(LDW)、車線維持支援(LKA:Lane Keep Assist)、死角警報(BSW:Blind Spot Warning)、後方交差交通警報(RCTW:Rear Cross-Traffic Warning)、衝突警報システム(CWS:Collision Warning System)、車線センタリング(LC:Lane Centering)、並びに/又は他の特徴及び機能が含まれ得る。
【0241】
ACCシステムは、RADARセンサ1260、LIDARセンサ1264、及び/又はカメラを使用することができる。ACCシステムには、縦方向ACC及び/又は横方向ACCが含まれ得る。縦方向ACCは、車両1200の直前の車両までの距離をモニタリング及び制御し、車速を自動的に調整して前方車両から安全な距離を維持する。横方向ACCは、距離維持を実行し、必要に応じて車線変更を車両1200に助言する。横方向ACCは、LC及びCWSなどの他のADASアプリケーションに関連している。
【0242】
CACCは、他の車両からの情報を使用する。これらの情報は、ネットワーク・インターフェース1224及び/又はワイヤレス・アンテナ1226を経由して、他の車両からワイヤレス・リンク経由で、又は間接的にネットワーク接続経由(例えば、インターネット経由)で受信され得る。直接リンクは車両間(V2V:Vehicle-to-Vehicle)通信リンクによって提供され得、間接リンクはインフラストラクチャ-車両間(I2V:Infrastructure-to-Vehicle)通信リンクであり得る。一般に、V2V通信概念は、直前の車両(例えば、車両1200のすぐ前にあり、車両1200と同じ車線にある車両)に関する情報を提供し、I2V通信概念は、さらに前方の交通に関する情報を提供する。CACCシステムには、I2V情報源及びV2V情報源のいずれか又は両方が含まれ得る。車両1200の前の車両の情報を所与として、CACCはより信頼性が高くなり得、交通の流れを滑らかにし、道路渋滞を低減する可能性がある。
【0243】
FCWシステムは、運転者に危険を警告するように設計されており、これにより、運転者は訂正措置を行うことができる。FCWシステムは、専用プロセッサ、DSP、FPGA、及び/又はASICに結合されている前面カメラ及び/又はRADARセンサ1260を使用する。専用プロセッサ、DSP、FPGA、及び/又はASICは、ディスプレイ、スピーカ、及び/又は振動コンポーネントなどの運転者フィードバックに電気的に結合されている。FCWシステムは、音、視覚的警報、振動、及び/又はクイック・ブレーキ・パルスなどの形で警報を提供することができる。
【0244】
AEBシステムは、別の車両又は他の物体との前方衝突が今にも起こりそうなことを検知し、運転者が指定された時間又は距離パラメータ内に訂正措置を行わない場合は、自動的にブレーキをかけることができる。AEBシステムは、専用プロセッサ、DSP、FPGA、及び/又はASICに結合されている前面カメラ及び/又はRADARセンサ1260を使用することができる。AEBシステムは、危険を検出すると、通常は最初に衝突を回避するための訂正措置を行うように運転者に警告する。運転手が訂正措置を行わない場合、AEBシステムは、自動的にブレーキをかけて、予測される衝突の影響を阻止しようとするか又は少なくとも軽減しようとすることができる。AEBシステムには、ダイナミック・ブレーキ・サポート及び/又は衝突緊急ブレーキなどの手法が含まれ得る。
【0245】
LDWシステムは、車両1200が車線区分線を交差すると、ハンドル又は座席の振動などの視覚的、聴覚的、及び/又は触覚的な警報を提供して運転者に警告する。方向指示灯を作動させることによって、運転者が意図的な車線逸脱を示す場合は、LDWシステムは作動しない。LDWシステムは、専用プロセッサ、DSP、FPGA、及び/又はASICに結合されている前面カメラを使用することができ、専用プロセッサ、DSP、FPGA、及び/又はASICは、ディスプレイ、スピーカ、及び/又は振動コンポーネントなどの運転者フィードバックに電気的に結合されている。
【0246】
LKAシステムは、LDWシステムの変形形態である。LKAシステムは、車両1200が車線から出始めた場合に車両1200を訂正するためのステアリング入力又はブレーキを提供する。
【0247】
BSWシステムは、自動車の死角にある車両を検出し、運転者に警告する。BSWシステムは、車線の合流又は変更が安全でないことを示す視覚的、聴覚的、及び/又は触覚的な警告を提供することができる。システムは、運転者が方向指示灯を使用すると、追加の警報を提供することができる。BSWシステムは、専用プロセッサ、DSP、FPGA、及び/又はASICに結合されている後面カメラ及び/又はRADARセンサ1260を使用することができる。専用プロセッサ、DSP、FPGA、及び/又はASICは、ディスプレイ、スピーカ、及び/又は振動コンポーネントなどの運転者フィードバックに電気的に結合されている。
【0248】
RCTWシステムは、車両1200がバックしているときに後面カメラの範囲外に物体が検出されると、視覚的、聴覚的、及び/又は触覚的な通知を提供することができる。いくつかのRCTWシステムには、衝突を回避するために車両のブレーキを確実にかけるAEBが含まれていてもよい。RCTWシステムは、専用プロセッサ、DSP、FPGA、及び/又はASICに結合されている1つ又は複数の後面RADARセンサ1260を使用することができる。専用プロセッサ、DSP、FPGA、及び/又はASICは、ディスプレイ、スピーカ、及び/又は振動コンポーネントなどの運転者フィードバックに電気的に結合されている。
【0249】
従来のADASシステムでは、誤検出結果が発生しやすく、これは、運転者にとってうっとうしく気を散らす可能性があるが、通常は壊滅的ではない。ADASシステムは運転者に警告し、運転者が安全状態が本当に存在するかどうかを判断し、それに応じて行動することを可能にするからである。しかしながら、自律車両1200では、矛盾する結果の場合には、車両1200自体が、プライマリ・コンピュータからの結果を聞き入れるか、セカンダリ・コンピュータ(例えば、第1のコントローラ1236又は第2のコントローラ1236)からの結果を聞き入れるかを判断しなければならない。例えば、いくつかの実施例では、ADASシステム1238は、バックアップ・コンピュータ合理性モジュールに知覚情報を提供するためのバックアップ及び/又はセカンダリ・コンピュータであり得る。バックアップ・コンピュータ合理性モニタは、ハードウェア・コンポーネント上で冗長な多様なソフトウェアを実行して、認識及び動的な運転タスクの障害を検出することができる。ADASシステム1238からの出力は、監視MCUに提供され得る。プライマリ・コンピュータからの出力とセカンダリ・コンピュータからの出力とが矛盾する場合、監視MCUは矛盾を調停して安全な動作を確保する方法を判断する必要がある。
【0250】
いくつかの実例では、プライマリ・コンピュータは、選択した結果へのプライマリ・コンピュータの信頼を示す信頼スコアを監視MCUに提供するように構成され得る。信頼スコアが閾値を超えると、セカンダリ・コンピュータが矛盾する又は不整合の結果を提供するかどうかに関係なく、監視MCUはプライマリ・コンピュータの指導に従い得る。信頼スコアが閾値を満たしておらず、プライマリ・コンピュータとセカンダリ・コンピュータとが異なる結果(例えば、矛盾)を示している場合、監視MCUは、コンピュータ間で調停を行い、適切な結果を判断することができる。
【0251】
監視MCUは、セカンダリ・コンピュータが誤アラームを提供する条件を、プライマリ・コンピュータ及びセカンダリ・コンピュータからの出力に基づいて判断するようにトレーニングされ、構成されているニューラル・ネットワークを実行するように構成され得る。したがって、監視MCU内のニューラル・ネットワークは、セカンダリ・コンピュータの出力をいつ信頼できて、いつ信頼できないかを学習することができる。例えば、セカンダリ・コンピュータがRADARベースのFCWシステムである場合、監視MCU内のニューラル・ネットワークは、いつFCWシステムが、アラームをトリガする排水溝の格子又はマンホール・カバーなど、実際には危険ではない金属製の物体を識別しているかを学習することができる。同様に、セカンダリ・コンピュータがカメラベースのLDWシステムである場合、監視MCU内のニューラル・ネットワークは、自転車運転者又は歩行者が存在し、車線逸脱が実際に最も安全な操作である場合にLDWをオーバーライドすることを学習することができる。監視MCU上で動作するニューラル・ネットワークを含む実施例では、監視MCUには、関連するメモリとともにニューラル・ネットワークを実行するのに適したDLA又はGPUの少なくとも1つが含まれ得る。好ましい実施例では、監視MCUには、SoC1204のコンポーネントが含まれ得るか、及び/又は該コンポーネントとして含まれ得る。
【0252】
他の実例では、ADASシステム1238には、従来のコンピュータ・ビジョンのルールを使用してADAS機能を実行するセカンダリ・コンピュータが含まれ得る。したがって、セカンダリ・コンピュータはクラシック・コンピュータ・ビジョン・ルール(if-then)を使用することができ、監視MCUにニューラル・ネットワークが存在することによって、信頼性、安全性、及びパフォーマンスを向上させることができる。例えば、多様な実装例及び意図的な非同一性によって、システム全体の耐障害性を、特に、ソフトウェア(又はソフトウェア・ハードウェア・インターフェース)機能によって生じる障害に対して高める。例えば、プライマリ・コンピュータ上で実行されているソフトウェアにソフトウェア・バグ又はエラーがあり、セカンダリ・コンピュータ上で実行されている非同一ソフトウェア・コードが全体的に同じ結果を提供する場合、監視MCUは、全体的な結果が正しく、プライマリ・コンピュータによって使用されているソフトウェア又はハードウェアのバグが重大なエラーの原因ではないとのより大きい信頼を有することができる。
【0253】
いくつかの実例では、ADASシステム1238の出力は、プライマリ・コンピュータの知覚ブロック及び/又はプライマリ・コンピュータの動的運転タスク・ブロックに供給され得る。例えば、ADASシステム1238が、すぐ前に物体があることにより前方衝突警報を示している場合、知覚ブロックは、物体を識別するときにこの情報を使用することができる。他の実例では、セカンダリ・コンピュータには、トレーニングされ、したがって、本明細書に説明するように、誤検出のリスクを低減する独自のニューラル・ネットワークがあってもよい。
【0254】
車両1200にはさらに、インフォテインメントSoC1230(例えば、車両内インフォテインメント・システム(IVI:In-Vehicle Infotainment))が含まれ得る。SoCとして図示及び説明されているが、インフォテインメント・システムはSoCでなくてもよく、2つ以上の個別のコンポーネントを含んでいてもよい。インフォテインメントSoC1230には、オーディオ(例えば、音楽、携帯情報端末、ナビゲーション命令、ニュース、ラジオなど)、ビデオ(例えば、TV、映画、ストリーミングなど)、電話(例えば、ハンズフリー通話)、ネットワーク接続性(例えば、LTE、Wi-Fi)、及び/又は情報サービス(例えば、ナビゲーション・システム、後方駐車支援、無線データ・システム、燃料レベル、総走行距離、ブレーキ燃料レベル、オイル・レベル、ドアの開閉、エア・フィルタ情報などの車両関連情報)を車両1200に提供するために使用できるハードウェアとソフトウェアとの組み合わせが含まれ得る。例えば、インフォテインメントSoC1230には、ラジオ、ディスク・プレーヤ、ナビゲーション・システム、ビデオ・プレーヤ、USB及びブルートゥース接続性、カーピュータ(carputer)、車内エンターテインメント、Wi-Fi、ハンドル・オーディオ・コントロール、ハンズフリー音声コントロール、ヘッドアップ・ディスプレイ(HUD:Heads-Up Display)、HMIディスプレイ1234、テレマティックス・デバイス、(例えば、様々なコンポーネント、特徴、及び/若しくはシステムを制御する並びに/又はそれらと対話するための)コントロール・パネル、及び/又は他のコンポーネントが含まれ得る。インフォテインメントSoC1230はさらに、ADASシステム1238からの情報、計画された車両操作などの自律運転情報、軌跡、周囲環境の情報(例えば、交差点情報、車両情報、道路情報など)、及び/又は他の情報などの(例えば、視覚的及び/又は可聴式の)情報を車両のユーザに提供するために使用され得る。
【0255】
インフォテインメントSoC1230には、GPU機能が含まれ得る。インフォテインメントSoC1230は、バス1202(例えば、CANバス、イーサネット(登録商標)など)を介して、車両1200の他のデバイス、システム、及び/又はコンポーネントと通信することができる。いくつかの実例では、プライマリ・コントローラ1236(例えば、車両1200のプライマリ及び/又はバックアップ・コンピュータ)が故障した場合に、インフォテインメント・システムのGPUが一部の自動運転機能を実行できるように、インフォテインメントSoC1230を監視MCUに結合することができる。このような実例では、インフォテインメントSoC1230は、本明細書に説明するように、車両1200を安全停止まで運転代行モードに入れることができる。
【0256】
車両1200にはさらに、計器群1232(例えば、デジタル・ダッシュ、電子計器群、デジタル計器パネルなど)が含まれ得る。計器群1232には、コントローラ及び/又はスーパーコンピュータ(例えば、個別のコントローラ又はスーパーコンピュータ)が含まれ得る。計器群1232には、スピードメータ、燃料レベル、油圧、タコメータ、オドメータ、方向指示器、ギヤシフト位置指示器、シート・ベルト警報灯、駐車ブレーキ警報灯、エンジン異常灯、エアバッグ(SRS)システム情報、照明コントロール、安全システム・コントロール、ナビゲーション情報などの計測セットが含まれ得る。いくつかの実例では、情報は、インフォテインメントSoC1230及び計器類1232に表示され得る、及び/又はそれらの間で共有され得る。つまり、計器類1232は、インフォテインメントSoC1230の一部として含まれていてもよく、逆もまた同様である。
【0257】
前述のように、少なくともいくつかの実施例では、車載プラットフォーム100(
図1を参照)は、自律車両1200のコンポーネントであり得る。このような実施例では、コントローラ1236に車載SoC104が含まれている。例えば、車載SoC104は、SoC1204の1つとして実装され得る。
【0258】
図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が含まれていてもよい。
【0259】
サーバ1278は、ネットワーク1290を介して、及び車両から、最近始まった道路工事など、予想外の又は変化した道路状況を示す画像を表す画像データを受信することができる。サーバ1278は、ネットワーク1290を介して、及び車両に、ニューラル・ネットワーク1292、更新されたニューラル・ネットワーク1292、及び/又は地図情報1294(交通及び道路状況に関する情報を含む)を送信することができる。地図情報1294の更新には、建設現場、道路の穴、迂回路、洪水、及び/又は他の障害物に関する情報など、HDマップ1222の更新が含まれ得る。いくつかの実例では、ニューラル・ネットワーク1292、更新されたニューラル・ネットワーク1292、及び/又はマップ情報1294は、環境内の任意の数の車両から受信したデータにおいて表される新しいトレーニング及び/又は経験から、並びに/或いは(例えば、サーバ1278及び/又は他のサーバを使用して)データセンタで実行されたトレーニングに基づいてもたらされたものであり得る。
【0260】
サーバ1278は、トレーニング・データに基づいて機械学習モデル(例えば、ニューラル・ネットワーク)をトレーニングするために使用され得る。トレーニング・データは、車両によって生成されてもよい、及び/又は、(例えば、ゲーム・エンジンを使用して)シミュレーションで生成されてもよい。いくつかの実例では、トレーニング・データは、タグ付けされ(例えば、ニューラル・ネットワークが教師あり学習からの恩恵を受ける場合)、及び/又は他の前処理が行われるが、他の実例では、トレーニング・データは、タグ付け及び/又は前処理されない(例えば、ニューラル・ネットワークが教師あり学習を必要としない場合)。トレーニングは、任意の1つ又は複数の機械学習手法のクラスに従って実行され得る。これには、教師ありトレーニング、半教師ありトレーニング、教師なしトレーニング、自己学習、強化学習、連合学習、転移学習、特徴学習(主成分分析及びクラスタ分析を含む)、多重線形部分空間学習、多様体学習、表現学習(スペア辞書学習を含む)、ルールベースの機械学習、異常検出、及びこれらの任意の変形例又は組み合わせが含まれるが、これらに限定されない。機械学習モデルがトレーニングされると、機械学習モデルは車両によって使用され得る(例えば、ネットワーク1290を介して車両に送信される)、及び/又は機械学習モデルは、車両を遠隔モニタリングするために、サーバ1278によって使用され得る。
【0261】
いくつかの実例では、サーバ1278は、車両からデータを受信し、リアルタイム・インテリジェント推論のために、そのデータを最新のリアルタイム・ニューラル・ネットワークに適用することができる。サーバ1278には、深層学習スーパーコンピュータ、及び/又はNVIDIAによって開発されたDGX及びDGXステーション・マシンなど、GPU1284によって給電される専用のAIコンピュータが含まれ得る。しかしながら、いくつかの実例では、サーバ1278には、CPU電源式のデータセンタのみを使用する深層学習インフラストラクチャが含まれていてもよい。
【0262】
サーバ1278の深層学習インフラストラクチャは、高速且つリアルタイムの推論が可能であり得、また、その能力を使用して、車両1200内のプロセッサ、ソフトウェア、及び/又は関連ハードウェアの正常性を評価及び検証することができる。例えば、深層学習インフラストラクチャは、一連の画像及び/又は車両1200が(例えば、コンピュータ・ビジョン及び/又は他の機械学習物体分類手法を介して)その一連の画像において位置を特定した物体など、定期的な更新を車両1200から受信することができる。深層学習インフラストラクチャは、独自のニューラル・ネットワークを実行して物体を識別し、それらを車両1200によって識別された物体と比較することができ、結果が一致せず、車両1200内のAIに異常があるとインフラストラクチャが判定した場合は、サーバ1278は車両1200に信号を送信して、車両1200のフェイルセーフ・コンピュータに制御を引き受け、乗員に通知し、安全な駐車操作を完了するよう指示することができる。
【0263】
推論のために、サーバ1278には、GPU1284と、1つ又は複数のプログラム可能な推論アクセラレータ(例えば、NVIDIAのTensorRT)とが含まれ得る。GPU電源式のサーバと推論アクセラレーションとの組み合わせは、リアルタイムの応答性を可能にすることができる。パフォーマンスがそれほど重要でない場合など、他の実例では、CPU、FPGA、及び他のプロセッサによって給電されるサーバを推論に使用することができる。
【0264】
コンピューティング・デバイスの例
図16は、本開示のいくつかの実施例を実装する際の使用に適しているコンピューティング・デバイス1600の例のブロック図である。コンピューティング・デバイス1600には、次のデバイス、すなわち、メモリ1604、1つ又は複数の中央処理ユニット(CPU)1606、1つ又は複数のグラフィックス処理ユニット(GPU)1608、通信インターフェース1610、I/Oポート1612、入力/出力コンポーネント1614、電源1616、1つ又は複数のプレゼンテーション・コンポーネント1618(例えば、ディスプレイ)、及び1つ又は複数の論理ユニット1620を、直接又は間接的に結合するインターコネクト・システム1602が含まれ得る。
【0265】
図16の様々なブロックは、インターコネクト・システム1602を介して回線で接続されているものとして示されているが、これは限定を意図したものではなく、明確にするためだけのものである。例えば、いくつかの実施例では、ディスプレイ・デバイスなどのプレゼンテーション・コンポーネント1618は、I/Oコンポーネント1614と見なされ得る(例えば、ディスプレイがタッチ・スクリーンの場合)。別の実例として、CPU1606及び/又はGPU1608には、メモリが含まれ得る(例えば、メモリ1604は、GPU1608、CPU1606、及び/又は他のコンポーネントのメモリに加えて、ストレージ・デバイスを表し得る)。つまり、
図16のコンピューティング・デバイスは例示にすぎない。すべて
図16のコンピューティング・デバイスの範囲内であると企図されるため、「ワークステーション」、「サーバ」、「ラップトップ」、「デスクトップ」、「タブレット」、「クライアント・デバイス」、「モバイル・デバイス」、「ハンドヘルド・デバイス」、「ゲーム・コンソール」、「電子制御ユニット(ECU:Electronic Control Unit)」、「仮想現実システム」、「拡張現実システム」、及び/又は他のデバイス若しくはシステムのタイプなどのカテゴリ間で区別はされない。
【0266】
インターコネクト・システム1602は、アドレス・バス、データ・バス、制御バス、又はこれらの組み合わせなどの1つ又は複数のリンク又はバスを表し得る。インターコネクト・システム1602には、業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、拡張業界標準アーキテクチャ(EISA:Extended Industry Standard Architecture)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA:Video Electronics Standards Association)バス、ペリフェラル・コンポーネント・インターコネクト(PCI)バス、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe)バス、及び/又は別のタイプのバス若しくはリンクなど、1つ又は複数のバス又はリンクのタイプが含まれ得る。いくつかの実施例では、コンポーネント間に直接接続がある。一実例として、CPU1606は、メモリ1604に直接接続され得る。さらに、CPU1606は、GPU1608に直接接続され得る。コンポーネント間に直接又はポイント・ツー・ポイント接続がある場合、インターコネクト・システム1602は、接続を実行するためにPCIeリンクを含み得る。これらの実例では、PCIバスがコンピューティング・デバイス1600に含まれている必要はない。
【0267】
メモリ1604には、様々なコンピュータ可読媒体が含まれ得る。コンピュータ可読媒体は、コンピューティング・デバイス1600によってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータ可読媒体には、揮発性及び不揮発性媒体の両方、並びにリムーバブル及び非リムーバブル媒体が含まれ得る。例として、また、限定ではないが、コンピュータ可読媒体には、コンピュータ記憶媒体及び通信媒体が含まれ得る。
【0268】
コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラム・モジュール、及び/又は他のデータ・タイプなどの情報の記憶のための任意の方法又は技術で実装された揮発性及び不揮発性媒体の両方及び/又はリムーバブル及び非リムーバブル媒体が含まれ得る。例えば、メモリ1604は、コンピュータ可読命令(例えば、プログラム及び/又はオペレーティング・システムなどのプログラム要素を表す)を記憶し得る。コンピュータ記憶媒体には、RAM、ROM、EEPROM、フラッシュ・メモリ若しくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD:Digital Versatile Disk)若しくは他の光学ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ若しくは他の磁気ストレージ・デバイス、又は、所望の情報を記憶するために使用され得、且つコンピューティング・デバイス1600によってアクセスされ得る任意の他の媒体が含まれ得るが、これらに限定されない。本明細書で使用される場合、コンピュータ記憶媒体には、信号自体は含まれない。
【0269】
コンピュータ記憶媒体は、搬送波又は他の輸送機構などの変調されたデータ信号でコンピュータ可読命令、データ構造、プログラム・モジュール、及び/又は他のデータ・タイプを実施例し得、任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、信号内の情報を符号化するようにその特性のうちの1つ又は複数が設定又は変更されている信号を指し得る。例として、限定ではないが、コンピュータ記憶媒体には、有線ネットワーク又は直接有線接続などの有線メディア、並びに音響、RF、赤外線、及び他のワイヤレス媒体などのワイヤレス媒体が含まれ得る。上記のいずれかの組み合わせもまた、コンピュータ可読媒体の範囲に含まれる。
【0270】
CPU1606は、コンピュータ可読命令のうちの少なくともいくつかを実行して、コンピューティング・デバイス1600の1つ又は複数のコンポーネントを制御して、本明細書で説明される方法及び/又はプロセスのうちの1つ又は複数を実行するように構成され得る。CPU1606の各々には、多数のソフトウェア・スレッドを同時に処理することが可能である1つ又は複数のコア(例えば、1個、2個、4個、8個、28個、72個など)が含まれ得る。CPU1606には、任意のタイプのプロセッサが含まれ得、また、実装されているコンピューティング・デバイス1600のタイプに応じて、異なるタイプのプロセッサ(例えば、モバイル・デバイスではコア数が少ないプロセッサ、サーバではコア数が多いプロセッサ)が含まれ得る。例えば、コンピューティング・デバイス1600のタイプに応じて、プロセッサは、縮小命令セット計算(RISC)を使用して実装されるアドバンストRISCマシン(ARM:Advanced RISC Machine)プロセッサ、又は複合命令セット計算(CISC:Complex Instruction Set Computing)を使用して実装される×86プロセッサであり得る。コンピューティング・デバイス1600には、1つ又は複数のマイクロプロセッサ、又は数学コプロセッサなどの補助コプロセッサに加えて、1つ又は複数のCPU1606が含まれ得る。
【0271】
CPU1606に加えて又はそれに代えて、GPU1608は、コンピュータ可読命令のうちの少なくともいくつかを実行して、コンピューティング・デバイス1600の1つ又は複数のコンポーネントを制御して、本明細書で説明される方法及び/又はプロセスのうちの1つ又は複数を実行するように構成され得る。GPU1608のうちの1つ又は複数が、(例えば、CPU1606のうちの1つ又は複数との統合GPUであり得、及び/或いはGPUのうちの1つ又は複数がディスクリートGPUであり得る。実施例では、GPU1608のうちの1つ又は複数が、CPU1606のうちの1つ又は複数のコプロセッサであり得る。GPU1608は、コンピューティング・デバイス1600によって使用されて、グラフィックス(例えば、3Dグラフィックス)がレンダリングされるか、又は汎用計算が実行され得る。例えば、GPU1608は、GPUでの汎用計算(GPGPU:General-Purpose computing on GPU)に使用され得る。GPU1608には、数百又は数千のソフトウェア・スレッドを同時に処理できる数百又は数千のコアが含まれ得る。GPU1608は、レンダリング・コマンド(例えば、ホスト・インターフェース経由で受信したCPU1606からのレンダリング・コマンド)に応答して、出力画像のピクセル・データを生成し得る。GPU1608には、ピクセル・データ、又はGPGPUデータなどの任意の他の適切なデータを記憶するための、ディスプレイ・メモリなどのグラフィックス・メモリが含まれ得る。ディスプレイ・メモリは、メモリ1604の一部として含まれていてもよい。GPU1608には、(例えば、リンクを介して)並行して動作する2つ以上のGPUが含まれ得る。リンクは、GPUを直接接続することも(例えば、NVLINKを使用して)、スイッチを介してGPUを接続することもできる(例えば、NVSwitchを使用して)。組み合わされた場合、各GPU1608は、出力の異なる部分又は異なる出力についてピクセル・データ又はGPGPUデータを生成することができる(例えば、第1の画像に第1のGPU、及び第2の画像に第2のGPU)。各GPUは、独自のメモリが含まれていても、他のGPUとメモリを共有してもよい。
【0272】
CPU1606及び/若しくはGPU1608に加えて又はそれらに代えて、論理ユニット1620は、コンピュータ可読命令のうちの少なくともいくつかを実行して、コンピューティング・デバイス1600の1つ又は複数のコンポーネントを制御して、本明細書で説明される方法及び/又はプロセスのうちの1つ又は複数を実行するように構成され得る。実施例では、CPU1608、GPU1608、及び/又は論理ユニット1620は、方法、プロセス、及び/又はこれらの部分の任意の組み合わせを個別に又は共同で実行し得る。論理ユニット1620のうちの1つ若しくは複数が、CPU1606及び/又はGPU1608のうちの1つ若しくは複数の一部であっても及び/又は統合されていてもよく、並びに/或いは論理ユニット1620のうちの1つ又は複数が、個別のコンポーネントであるか、そうでなければ、CPU1606及び/又はGPU1608の外部にあってもよい。実施例では、論理ユニット1620のうちの1つ又は複数が、CPU1606のうちの1つ又は複数及び/或いはGPU1608のうちの1つ又は複数のコプロセッサであり得る。
【0273】
論理ユニット1620の例には、テンソル・コア(TC:Tensor Core)、テンソル処理ユニット(TPU:Tensor Processing Unit)、ピクセル・ビジュアル・コア(PVC:Pixel Visual Core)、ビジョン処理ユニット(VPU:Vision Processing Unit)、グラフィックス処理クラスタ(GPC:Graphics Processing Cluster)、テクスチャ処理クラスタ(TPC:Texture Processing Cluster)、ストリーミング・マルチプロセッサ(SM:Streaming Multiprocessor)、ツリー・トラバーサル・ユニット(TTU:Tree Traversal Unit)、人工知能アクセラレータ(AIA:Artificial Intelligence Accelerator)、深層学習アクセラレータ(DLA:Deep Learning Accelerator)、算術論理ユニット(ALU:Arithmetic-Logic Unit)、特定用途向け集積回路(ASIC:Application-Specific Integrated Circuit)、浮動小数点ユニット(FPU:Floating Point Unit)、I/O要素、ペリフェラル・コンポーネント・インターコネクト(PCI:Peripheral Component Interconnect)又はペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe)要素など、1つ又は複数の処理コア及び/又はそのコンポーネントが含まれる。
【0274】
通信インターフェース1610には、コンピューティング・デバイス1600が、有線及び/又はワイヤレス通信を含む電子通信ネットワークを介して他のコンピューティング・デバイスと通信することを可能にする、1つ又は複数の受信器、送信器、及び/或いはトランシーバが含まれ得る。通信インターフェース1610には、ワイヤレス・ネットワーク(例えば、Wi-Fi、Z-Wave、ブルートゥース(登録商標)、ブルートゥースLE、ジグビーなど)、有線ネットワーク(例えば、イーサネット(登録商標)又はInfiniBand経由の通信)、ロー・パワー・ワイド・エリア・ネットワーク(例えば、LoRaWAN、SigFoxなど)、及び/又はインターネットなどの多数の異なるネットワークのうちのいずれかを介した通信を可能にするためにコンポーネント及び機能が含まれ得る。
【0275】
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によって使用されて、没入感のある拡張現実又は仮想現実をレンダリングすることができる。
【0276】
電源1616には、ハードワイヤード電源、バッテリ電源、又はこれらの組み合わせが含まれ得る。電源1616は、コンピューティング・デバイス1600のコンポーネントが動作することを可能にするために、コンピューティング・デバイス1600に給電し得る。
【0277】
プレゼンテーション・コンポーネント1618には、ディスプレイ(例えば、モニタ、タッチ・スクリーン、テレビ画面、ヘッドアップ・ディスプレイ(HUD)、他のディスプレイ・タイプ、又はこれらの組み合わせ)、スピーカ、及び/又は他のプレゼンテーション・コンポーネントが含まれ得る。プレゼンテーション・コンポーネント1618は、他のコンポーネント(例えば、GPU1608、CPU1606など)からデータを受信し、データを(例えば、画像、ビデオ、サウンドなどとして)を出力し得る。
【0278】
本開示は、コンピュータ、又はパーソナル・データ・アシスタント若しくは他のハンドヘルド・デバイスなどの他のマシンによって実行される、プログラム・モジュールなどのコンピュータ実行可能命令を含むコンピュータ・コード又はマシン使用可能命令の一般的なコンテキストで説明され得る。一般に、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれるプログラム・モジュールは、特定のタスクを実行する、又は特定の抽象データ型を実装するコードを指す。本開示は、ハンドヘルド・デバイス、家電製品、汎用コンピュータ、より専門的なコンピューティング・デバイスなどが含まれる様々なシステム構成で実施され得る。本開示はまた、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境で実施されてもよい。
【0279】
本開示の少なくとも1つの実施例について、次の条項を考慮して説明することができる。
【0280】
1.第1の部分と、第2の部分と、を備える集積回路であって、第1の部分は、第1のタイマを含み、第1の部分は、複数の論理ブロックに起因する少なくとも1つの障害に対応するデータを少なくとも1つのエラー信号に集約し、且つ少なくとも1つのエラー信号を送信し、第1のタイマは、少なくとも1つのエラー信号が送信されたときに開始し、且つ少なくとも1つの障害に対応するデータが第1の部分からクリアされたときにリセットされ、第1の部分は、第1のタイマが少なくとも第1の所定の時間が経過したことを示し、少なくとも1つの障害に対応するデータが第1の部分からクリアされていないときに、タイムアウト・エラー信号を送信し、第2の部分は、少なくとも1つのエラー信号と、タイムアウト・エラー信号が送られた場合にタイムアウト・エラー信号とを受信し、第2の部分は、タイムアウト・エラー信号を受信した後に外部システムに通知する、集積回路。
【0281】
2.少なくとも1つの障害のうちの特定の障害に対して、第1の部分は、特定の障害を発生させたエラーを識別し、複数の論理ブロックのうちの少なくとも1つがエラーを訂正したことを第1の部分が判定するときに、第1の部分は、特定の障害に対応するデータを第1の部分からクリアし、第1の部分は、特定の障害に対応するデータが第1の部分からクリアされたことを第2の部分に通知し、第2の部分は、特定の障害に対応するデータを第2の部分からクリアする、条項1に記載の集積回路。
【0282】
3.少なくとも1つの障害のうちの特定の障害に対して、第1の部分は、特定の障害を発生させたエラーを識別し、第1の部分は、エラーを訂正する1つ又は複数の措置を実行し、特定の障害に対応するデータを第1の部分からクリアし、第1の部分は、特定の障害に対応するデータが第1の部分からクリアされたことを第2の部分に通知し、第2の部分は、特定の障害に対応するデータを第2の部分からクリアする、条項1又は2に記載の集積回路。
【0283】
4.少なくとも1つの障害のうちの特定の障害に対して、第1の部分は、特定の障害を発生させたエラーを識別し、第1の部分は、記憶場所に障害情報を書き込み、エラーのシビアリティを第2の部分に通知し、第2の部分は、エラーのシビアリティに少なくとも部分的に基づいて障害情報を読み取るかどうかを判断し、第2の部分は、エラーを訂正する1つ又は複数の措置を実行し、特定の障害に対応するデータを第1の部分からクリアするように第1の部分に通知し、第1の部分は、第1の部分が通知を受信した後に、特定の障害に対応するデータを第1の部分からクリアし、第1の部分は、特定の障害に対応するデータが第1の部分からクリアされたことを第2の部分に通知し、第2の部分は、特定の障害に対応するデータを第2の部分からクリアする、条項1から3までのいずれか1つに記載の集積回路。
【0284】
5.少なくとも1つの障害のうちの特定の障害に対して、第1の部分は、特定の障害を発生させたエラーを識別し、第1の部分は、エラーのシビアリティを第2の部分に通知し、第2の部分は、エラーのシビアリティに基づいてエラーを外部システムに通知する、条項1から4までのいずれか1つに記載の集積回路。
【0285】
6.第2の部分は、第2の部分がタイムアウト・エラー信号を受信したときに開始する第2のタイマを含み、第2のタイマは、少なくとも1つの障害に対応するデータが第2の部分からクリアされた後にリセットされ、第2の部分は、外部システムに通知する前に、第2のタイマが少なくとも第2の所定の時間が経過したことを示すまで待機する、条項1から5までのいずれか1つに記載の集積回路。
【0286】
7.第2の部分は、タイムアウト・エラー信号を受信した後に1つ又は複数の訂正措置を実行し、少なくとも1つの障害に対応するデータをクリアするように第1の部分に通知し、第2の部分は、第2のタイマが少なくとも第2の所定の時間が経過したことを示す前に、第2の部分が少なくとも1つの障害に対応するデータをクリアするように第1の部分に通知したときに、外部システムに通知しない、条項6に記載の集積回路。
【0287】
8.第1の部分は、少なくとも1つの障害に対応するデータを第2の部分からクリアする通知を受信した後に、少なくとも1つの障害に対応するデータを第1の部分からクリアし、第1の部分は、少なくとも1つの障害に対応するデータが第1の部分からクリアされたことを第2の部分に通知し、第2の部分は、少なくとも1つの障害に対応するデータを第2の部分からクリアする、条項7に記載の集積回路。
【0288】
9.単一の半導体材料上に存在している、条項1から8までのいずれか1つに記載の集積回路。
【0289】
10.車載システムのシステム・オン・チップ(「SoC」)の一部分を実装している、条項1から9までのいずれか1つに記載の集積回路。
【0290】
11.第2の部分は、第1の部分よりも高いリスク分類レベルで動作する、条項1から10までのいずれか1つに記載の集積回路。
【0291】
12.少なくとも1つのエラー信号は、訂正されていないエラー信号を含み、少なくとも1つの障害に対応するデータは、訂正されていないエラー信号に第1の部分によって集約された、訂正されていない障害に対応するデータを含み、集積回路は、第1の部分から第2の部分へタイムアウト・エラー信号を導く第1の信号導体と、第1の部分から第2の部分へ訂正されていないエラー信号を導く第2の信号導体と、をさらに備える、条項1から11までのいずれか1つに記載の集積回路。
【0292】
13.少なくとも1つのエラー信号は、訂正されたエラー信号を含み、少なくとも1つの障害に対応するデータは、訂正されたエラー信号に第1の部分によって集約された、訂正された障害に対応し、集積回路は、第1の部分から第2の部分へ訂正されたエラー信号を導く第3の信号導体をさらに備える、条項11に記載の集積回路。
【0293】
14.第1の部分から第2の部分へシビアリティ信号を送信するための第1の部分と第2の部分との間の接続部であって、シビアリティ信号は、少なくとも1つの障害の各々のシビアリティ・レベルを示す、接続部をさらに備える、条項1から13までのいずれか1つに記載の集積回路。
【0294】
15.各々、複数の論理ブロックのうちの少なくとも1つからの1つ又は複数の障害に対応するデータを受信し、1つ又は複数の障害に対応するデータを1つ又は複数のエラー信号に集約し、1つ又は複数のエラー信号を少なくとも1つのエラー信号に集約する第1の部分に、1つ又は複数のエラー信号を送信する、複数の障害アグリゲータをさらに備える、条項1から14までのいずれか1つに記載の集積回路。
【0295】
16.集積回路の第1の回路によって、集積回路の論理ブロック内で起きた少なくとも1つのエラーによって、各々発生した少なくとも1つの障害に対応するデータを受信することと、第1の回路によって、少なくとも1つの障害に対応するデータを少なくとも1つのエラー信号に集約することと、第1の回路によって、集積回路の第2の回路に少なくとも1つのエラー信号を送信することであって、送信が第1のタイマを開始する、送信することと、第1の回路によって、少なくとも1つの障害のうちの特定の1つを発生させた1つ又は複数のエラーが訂正されたことを判定することと、第1の回路が1つ又は複数のエラーが訂正されたと判定した後に、第1の回路によって、特定の障害に対応するデータをクリアすることであって、第1のタイマは、少なくとも1つの障害に対応するデータがクリアされたときにリセットされる、クリアすることと、第1のタイマが少なくとも第1の所定の時間が経過したことを示すときに、第1の回路によって、タイムアウト・エラー信号を第2の回路に送信することと、第2の回路がタイムアウト・エラー信号を受信した後に、第2の回路によって、外部システムに通知することと、を含む方法。
【0296】
17.第1の回路によって、特定の障害を発生させた1つ又は複数のエラーを識別することと、第1の回路によって、1つ又は複数のエラーが集積回路の少なくとも1つの論理ブロックによって訂正されたことを判定することと、第1の回路によって、特定の障害に対応するデータが第1の回路からクリアされたことを第2の回路に知らせることと、第2の回路によって、特定の障害に対応するデータを第2の回路からクリアすることと、をさらに含む、条項16に記載の方法。
【0297】
18.第1の回路によって、特定の障害を発生させた1つ又は複数のエラーを識別することと、第1の回路によって、1つ又は複数のエラーを訂正する1つ又は複数の措置を実行することと、第1の回路によって、特定の障害に対応するデータが第1の回路からクリアされたことを第2の回路に知らせることと、第2の回路によって、特定の障害に対応するデータを第2の回路からクリアすることと、をさらに含む、条項16又は17に記載の方法。
【0298】
19.第1の回路によって、特定の障害を発生させた1つ又は複数のエラーを識別することと、第1の回路によって、記憶場所に障害情報を書き込むことと、第1の回路によって、1つ又は複数のエラーのシビアリティを第2の回路に知らせることと、第2の回路によって、1つ又は複数のエラーのシビアリティに少なくとも部分的に基づいて障害情報を読み取るかどうかを判断することと、第2の回路によって、1つ又は複数のエラーを訂正する1つ又は複数の措置を実行することと、第2の回路によって、特定の障害を発生させた1つ又は複数のエラーが訂正されたことを第1の回路に知らせることと、特定の障害に対応するデータを第1の回路及び第2の回路からクリアすることと、をさらに含む、条項16から18までのいずれか1つに記載の方法。
【0299】
20.第1の回路によって、特定の障害を発生させた1つ又は複数のエラーを識別することと、第1の回路によって、1つ又は複数のエラーのシビアリティを第2の回路に知らせることと、第2の回路によって、エラーのシビアリティに基づいてエラーを外部システムに通知することと、をさらに含む、条項16から19までのいずれか1つに記載の方法。
【0300】
21.外部システムに通知する前に、第2のタイマが少なくとも第2の所定の時間が経過したことを示すまで、第2の回路によって待機することであって、第2のタイマは、第2の回路がタイムアウト・エラー信号を受信したときに開始し、少なくとも1つの障害に対応するデータが第2の回路からクリアされた後にリセットされる、待機することをさらに含む、条項16から20までのいずれか1つに記載の方法。
【0301】
22.タイムアウト・エラー信号を受信した後に、第2の回路によって、1つ又は複数の訂正措置を実行することであって、1つ又は複数の訂正措置は、少なくとも1つの障害の各々を発生させた少なくとも1つのエラーを訂正する、実行することと、少なくとも1つの障害に対応するデータを第1の回路及び第2の回路からクリアすることであって、第2の回路は、第2のタイマが少なくとも第2の所定の時間が経過したことを示す前に、少なくとも1つの障害に対応するデータが第2の回路からクリアされたときに外部システムに通知しない、クリアすることと、をさらに含む、条項21に記載の方法。
【0302】
23.少なくとも1つの障害に対応するデータを第1の回路及び第2の回路からクリアすることは、第2の回路によって、少なくとも1つの障害の各々を発生させた少なくとも1つのエラーが訂正されたことを第1の回路に知らせること、第1の回路によって、少なくとも1つの障害のうちの各障害に対応するデータを第1の回路からクリアすることと、第1の回路によって、少なくとも1つの障害のうちの各障害に対応するデータが第1の回路からクリアされたことを第2の回路に知らせることと、第2の回路によって、少なくとも1つの障害のうちの各障害に対応するデータを第2の回路からクリアすることと、をさらに含む、条項22に記載の方法。
【0303】
24.集積回路は、連続する半導体材料上に存在している、条項16から23までのいずれか1つに記載の方法。
【0304】
25.集積回路は、車載システムのシステム・オン・チップ(「SoC」)の一部分を実装している、条項16から24までのいずれか1つに記載の方法。
【0305】
26.第1の回路は、第1の電圧ドメイン及び第1のクロック・ドメイン内で動作し、第2の回路は、第2の電圧ドメイン及び第2のクロック・ドメイン内で動作し、第2の電圧ドメインは、第1の電圧ドメインとは異なり、第2のクロック・ドメインは、第1のクロック・ドメインとは異なり、第2の回路は、第1の回路よりも高いリスク分類レベルで動作する、条項16から25までのいずれか1つに記載の方法。
【0306】
27.複数の障害アグリゲータの各々によって、複数の論理ブロックのうちの少なくとも1つからの1つ又は複数の障害を受信することと、複数の障害アグリゲータの各々によって、障害アグリゲータによって受信された1つ又は複数の障害に基づいてエラー信号を生成することと、複数の障害アグリゲータの各々によって、障害アグリゲータによって生成されたエラー信号を第1の回路に送信して、少なくとも1つの障害を含む複数のエラー信号を送信することであって、第1の回路は、少なくとも1つの障害に対応するデータを少なくとも1つのエラー信号に集約する、送信することと、をさらに含む、条項16から26までのいずれか1つに記載の方法。
【0307】
28.安全部分と、駆動部分と、第1の信号導体と、タイムアウト信号導体と、を備える自律車両の集積回路であって、安全部分は、自律車両を安全な状態にするために、複数の訂正措置を実行し、複数の訂正措置は、安全部分がタイムアウト・エラーがアサートされたことを検出したときに、外部システムに発信エラー信号を送信することを含み、駆動部分は、自律車両の少なくとも1つの機能を制御し、駆動部分は、駆動部分がエラー信号内の第1のアサートされたエラーを安全部分に送信したときに開始する第1のタイマを含み、第1のタイマは、駆動部分において最後のアサートされたエラーがディアサートされたときにリセットされ、駆動部分は、第1のタイマが少なくとも第1の所定の時間が経過したことを示すときに、タイムアウト・エラー信号内のタイムアウト・エラーをアサートし、第1の信号導体は、駆動部分から安全部分へエラー信号を導き、安全部分は、エラー信号内の各アサートされたエラーのアサートされたエラーを含み、タイムアウト信号導体は、駆動部分から安全部分へタイムアウト・エラー信号を導く集積回路。
【0308】
29.エラー信号内のアサートされた各エラーについて、駆動部分は、エラーがアサートされた理由を識別し、駆動部分の論理ブロックがエラーがアサートされた理由に適切に対処していると駆動部分が判定したときに、駆動部分は、駆動部分内のエラーをディアサートし、駆動部分は、駆動部分においてエラーがディアサートされたことを安全部分に通知し、駆動部分においてエラーがディアサートされたとの通知を安全部分が受信した後に、安全部分は、安全部分内のエラーをディアサートする、条項28に記載の集積回路。
【0309】
30.エラー信号内のアサートされた各エラーについて、駆動部分は、エラーがアサートされた理由を識別し、駆動部分は、1つ又は複数の措置を実行して、エラーがアサートされた理由に対処し、駆動部分は、駆動部分内のエラーをディアサートし、駆動部分は、駆動部分においてエラーがディアサートされたことを安全部分に通知し、駆動部分においてエラーがディアサートされたとの通知を安全部分が受信した後に、安全部分は、安全部分内のエラーをディアサートする、条項28又は29に記載の集積回路。
【0310】
31.エラー信号内のアサートされた各エラーについて、駆動部分は、エラーがアサートされた理由を識別し、駆動部分は、記憶場所に情報を書き込み、安全部分にエラーのシビアリティを通知し、安全部分は、エラーのシビアリティに少なくとも部分的に基づいて情報を読み取るかどうかを判断し、安全部分は、複数の訂正措置のうちの少なくとも1つを実行して、エラーがアサートされた理由に対処し、安全部分は、エラーをディアサートするように駆動に通知し、駆動部分がエラーをディアサートするとの通知を受信した後に、駆動部分は、駆動部分内のエラーをディアサートし、駆動部分は、駆動部分においてエラーがディアサートされたことを安全部分に通知し、駆動部分においてエラーがディアサートされたとの通知を安全部分が受信した後に、安全部分は、安全部分内のエラーをディアサートする、条項28から30までのいずれか1つに記載の集積回路。
【0311】
32.エラー信号内のアサートされた各エラーについて、駆動部分は、エラーがアサートされた理由を識別し、駆動部分は、安全部分にエラーのシビアリティを通知し、安全部分は、エラーのシビアリティに基づいて外部システムにエラーを通知する、条項28から31のいずれか1つに記載の集積回路。
【0312】
33.安全部分は、安全部分がタイムアウト・エラー信号内のタイムアウト・エラーを受信したときに開始する第2のタイマを含み、第2のタイマは、安全部分がアサートされたエラーをもはや含まなくなったときにリセットされ、安全部分は、外部システムに発信エラー信号を送信する前に、第2のタイマが少なくとも第2の所定の時間が経過したことを示すまで待機する、条項28から32までのいずれか1つに記載の集積回路。
【0313】
34.安全部分は、タイムアウト・エラー信号内のタイムアウト・エラーを受信した後に、複数の訂正措置のうちの少なくとも1つを実行し、エラー信号内のアサートされた各エラーをディアサートするように駆動部分に通知し、第2のタイマが少なくとも第2の所定の時間が経過したことを示す前に、安全部分がエラー信号内のアサートされた各エラーをディアサートするように駆動部分に通知したときに、安全部分は発信エラー信号を送信しない、条項33に記載の集積回路。
【0314】
35.単一の半導体材料上に存在している、条項28から34までのいずれか1つに記載の集積回路。
【0315】
36.安全部分は、駆動部分よりも高いリスク・レベルで動作する、条項28から35までのいずれか1つに記載の集積回路。
【0316】
37.エラー信号内の各アサートされたエラーは、訂正されていないエラーであり、エラー信号は、訂正されていないエラー信号であり、第1の信号導体は、訂正されていないエラー信号導体であり、駆動部分は、安全部分に、訂正されたエラー信号内のアサートされた訂正されたエラーを送信し、集積回路は、駆動部分から安全部分へ訂正されたエラー信号を導く訂正された信号導体であって、安全部分は、訂正されたエラー信号内の各アサートされた訂正されたエラーのアサートされた訂正されたエラーを含む、訂正された信号導体をさらに備える、条項28から36までのいずれか1つに記載の集積回路。
【0317】
38.駆動部分から安全部分へシビアリティ信号を送信するための駆動部分と安全部分との間の接続部であって、シビアリティ信号は、エラー信号内のアサートされたエラーのシビアリティ・レベルを示す、接続部をさらに備える、条項28から37までのいずれか1つに記載の集積回路。
【0318】
39.各々、複数の論理ブロックのうちの少なくとも1つからの1つ又は複数の障害を受信し、1つ又は複数の障害を1つ又は複数のエラー信号に集約し、1つ又は複数のエラー信号をエラー信号に集約する駆動部分に、1つ又は複数のエラー信号を送信する、複数の障害アグリゲータをさらに備える、条項28から38までのいずれか1つに記載の集積回路。
【0319】
開示された実施例を説明するコンテキストにおける(特に、次の特許請求の範囲のコンテキストにおける)「a」及び「an」及び「the」という用語及び同様の参照の使用は、本明細書に特に明記されていない限り、又はコンテキストによって明確に矛盾する場合を除き、用語の定義としてではなく、単数形及び複数形の両方を対象とするように解釈されるべきである。「備える(comprising)」、「有する(having)」、「含む(including)」、及び「包含する(containing)」という用語は、特に明記されていない限り、非限定的用語(「~が含まれるが、これに限定されない」を意味する)と解釈されるものとする。「接続された(connected)」という用語は、修飾されておらず、物理的な接続を指す場合、何かが介在していたとしても、部分的に又は全体的に中に含まれる、取り付けられる、又は一緒に結合されると解釈されるべきである。本明細書における値の範囲の記載は、本明細書に特に明記されていない限り、範囲内の別個の各値を個別に参照する簡単な方法であることを単に意図するものであり、別個の各値は、本明細書で個別に記載されたかのように本明細書に組み込まれる。少なくとも1つの実施例では、「セット」又は「サブセット」という用語の使用(例えば、「アイテムのセット」)は、特に明記されていない限り、又はコンテキストによって矛盾する場合を除き、1つ又は複数のメンバーを含む空ではないコレクションと解釈されるべきである。さらに、特に明記されていない限り、又はコンテキストによって明確に矛盾する場合を除き、対応するセットの「サブセット」という用語は、対応するセットの適切なサブセットを示すとは限らず、サブセットと対応するセットとは等しくてもよい。
【0320】
本明細書で使用される場合、2つ以上の要素に関する「及び/又は」の記載は、1つの要素のみ、又は要素の組み合わせを意味すると解釈されるべきである。例えば、「要素A、要素B、及び/又は要素C」には、要素Aのみ、要素Bのみ、要素Cのみ、要素A及び要素B、要素A及び要素C、要素B及び要素C、又は要素A、B、及びCが含まれ得る。
【0321】
「A、B、及びCのうちの少なくとも1つ(at least one of A,B,and C)」又は「A、B及びCのうちの少なくとも1つ(at least one of A,B and C)」の形式の語句などの接続的な言語は、具体的に別段に述べられていない限り、又はコンテキストによって明確に矛盾する場合を除き、項目、用語などが、現在まで一般的に使用されるコンテキストで、A若しくはB若しくはCのいずれか、又はA及びB及びCのセットの任意の空ではないサブセットであり得ると理解される。例えば、3つのメンバーを有するセットの例示的な例では、「A、B、及びCのうちの少なくとも1つ」及び「A、B及びCのうちの少なくとも1つ」という接続的な語句は、次のセット、すなわち、{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}のうちのいずれかを指す。したがって、このような接続的な言語は、特定の実施例に、Aのうちの少なくとも1つ、Bのうちの少なくとも1つ、及びCのうちの少なくとも1つが存在することが必要であることを意味することを意図したものではない。また、特に明記されていない限り、又はコンテキストによって矛盾する場合を除き、「複数」という用語は、複数の状態を示す(例えば、「複数の項目」は多数の項目を示す)。少なくとも1つの実施例では、複数における項目の数は、少なくとも2であるが、明示的に又はコンテキストによって示された場合は、より多くてもよい。さらに、特に明記されていない限り、又はコンテキストから明らかである場合を除き、「~に基づく(based on)」という語句は、「少なくとも部分的に基づく(based at least in part on)」を意味し、「~のみに基づく(based solely on)」を意味するものではない。
【0322】
本明細書に説明するプロセスの操作は、本明細書に特に明記されていない限り、又はコンテキストによって明確に矛盾する場合を除き、任意の適切な順序で実行され得る。少なくとも1つの実施例では、本明細書に説明するプロセス(又はその変形形態及び/又は組み合わせ)などのプロセスは、実行可能な命令で構成された1つ又は複数のコンピュータ・システムの制御下で実行され、ハードウェア又はその組み合わせによって、1つ又は複数のプロセッサ上で集合的に実行されるコード(例えば、実行可能命令、1つ若しくは複数のコンピュータ・プログラム、又は1つ若しくは複数のアプリケーション)として実装される。少なくとも1つの実施例では、コードはコンピュータ可読記憶媒体に記憶される。少なくとも1つの実施例では、1つ又は複数のプロセッサによって実行可能な複数の命令を含むコンピュータ・プログラムの形式で記憶される。少なくとも1つの実施例では、コンピュータ可読記憶媒体は、一時的な信号(例えば、伝播する過渡的な電気又は電磁伝送)を除外するが、一時的な信号のトランシーバ内の非一時的なデータ・ストレージ回路(例えば、バッファ、キャッシュ、及びキュー)を含む、非一時的なコンピュータ可読記憶媒体である。少なくとも1つの実施例では、コード(例えば、実行可能コード又はソース・コード)は、実行可能命令が記憶された1つ又は複数の非一時的コンピュータ可読記憶媒体(又は実行可能命令を記憶する他のメモリ)のセットに記憶される。実行可能命令は、コンピュータ・システムの1つ又は複数のプロセッサによって実行されると(すなわち、実行された結果として)、コンピュータ・システムに本明細書で説明する操作を実行させる。少なくとも1つの実施例では、非一時的コンピュータ可読記憶媒体のセットは、複数の非一時的コンピュータ可読記憶媒体を含み、複数の非一時的コンピュータ可読記憶媒体の個々の非一時的記憶媒体のうちの1つ又は複数にはすべてのコードはないが、複数の非一時的コンピュータ可読記憶媒体は集合的にすべてのコードを記憶する。少なくとも1つの実施例では、異なる命令が異なるプロセッサによって実行されるように実行可能命令が実行される。少なくとも1つの実施例では、非一時的コンピュータ可読記憶媒体が命令を記憶し、メインの中央処理ユニット(「CPU」)が命令のうちのいくつかを実行し、グラフィックス処理ユニット(「GPU」)が他の命令を実行する。少なくとも1つの実施例では、コンピュータ・システムの異なるコンポーネントが別個のプロセッサを有し、異なるプロセッサが異なる命令のサブセットを実行する。
【0323】
したがって、少なくとも1つの実施例では、コンピュータ・システムは、本明細書に説明するプロセスの操作を単独で又は集合的に実行する1つ又は複数のサービスを実装するように構成され、そのようなコンピュータ・システムは、操作の実行を可能にする適切なハードウェア及び/又はソフトウェアで構成される。さらに、本開示の少なくとも1つの実施例を実装するコンピュータ・システムは、単一のデバイスであり、また、別の実施例では、分散コンピュータ・システムが本明細書で説明される操作を実行し、単一のデバイスですべての操作を実行しないように、異なって動作する複数のデバイスを含む分散コンピュータ・システムである。
【0324】
本明細書に提供される任意及びすべての実例又は例示的な言語(例えば、「など」)の使用は、単に本開示の実施例をより適切に示すことを意図したものであり、特に主張されていない限り、本開示の範囲に限定を課すものではない。本明細書における言語は、請求項に係わらない任意の要素が、本開示の実践に不可欠であることを示していると解釈されるべきではない。
【0325】
本明細書に引用されている出版物、特許出願、及び特許を含むすべての参照資料は、各参照資料が個別に且つ具体的に、参照により組み込まれることが示され、本明細書にその全体が記載されているのと同じ程度まで参照により本明細書に組み込まれる。
【0326】
説明及び特許請求の範囲では、「結合された(coupled)」及び「接続された(connected)」という用語がその派生語とともに使用され得る。これらの用語は、相互の同義語として意図されていない場合があることが理解されるべきである。むしろ、特定の実例では、「接続された」又は「結合された」は、2つ以上の要素が相互に直接又は間接的に物理的又は電気的に接触していることを示すために使用され得る。「結合された」とは、2つ以上の要素が相互に直接接触していないが、相互に協働又は対話することを意味する場合もある。
【0327】
特に明記されていない限り、明細書全体を通して、「処理」、「コンピューティング」、「計算」、「判定」などの用語は、コンピュータ若しくはコンピューティング・システム、又は同様の電子コンピューティング・デバイスのアクション及び/又はプロセスを指していることを理解できるであろう。該アクション及び/又はプロセスは、コンピューティング・システムのレジスタ及び/又はメモリ内の物理量(例えば、電子量)として表されるデータを操作し、且つ/或いは、こうしたデータをコンピューティング・システムのメモリ、レジスタ、又は他のそのような情報ストレージ、伝送又は表示デバイス内の物理量として同様に表される他のデータに変換する。
【0328】
同様に、「プロセッサ」という用語は、レジスタ及び/又はメモリからの電子データを処理し、その電子データをレジスタ及び/又はメモリに記憶され得る他の電子データに変換する任意のデバイス又はデバイスの一部分を指し得る。非限定的な例として、「プロセッサ」はCPU又はGPUであり得る。「コンピューティング・プラットフォーム」は、1つ又は複数のプロセッサを備え得る。本明細書で使用される場合、「ソフトウェア」プロセスには、少なくとも1つの実施例では、タスク、スレッド、及びインテリジェント・エージェントなど、時間の経過とともに作業を実行するソフトウェア・エンティティ及び/又はハードウェア・エンティティが含まれ得る。また、各プロセスは、命令を順次又は並列に、連続的又は断続的に実行するための、複数のプロセスを指している場合がある。「システム」及び「方法」という用語は、システムが1つ又は複数の方法を具体化することができ、方法がシステムと見なされ得る限りにおいて、本明細書では相互に交換可能に使用される。
【0329】
少なくとも1つの実施例では、算術論理演算ユニットは、結果を生成するために1つ又は複数の入力を取る組み合わせ論理回路のセットである。少なくとも1つの実施例では、算術論理演算ユニットはプロセッサによって使用されて、加算、減算、又は乗算などの数学操作が実装される。少なくとも1つの実施例では、算術論理演算ユニットを使用して論理AND/OR又はXORなどの論理操作が実装される。少なくとも1つの実施例では、算術論理演算ユニットはステートレスであり、論理ゲートを形成するように配置された半導体トランジスタなどの物理的なスイッチング・コンポーネントから作られている。少なくとも1つの実施例では、算術論理演算ユニットは、関連クロックを有するステートフル論理回路として内部的に動作し得る。少なくとも1つの実施例では、算術論理演算ユニットは、内部ステートが関連するレジスタ・セットで維持されない非同期論理回路として構築され得る。少なくとも1つの実施例では、算術論理演算ユニットはプロセッサによって使用されて、プロセッサの1つ又は複数のレジスタに格納されたオペランドを結合して、プロセッサによって別のレジスタ又はメモリ位置に記憶できる出力を生成する。
【0330】
少なくとも1つの実施例では、プロセッサによって取得された命令を処理した結果、プロセッサは1つ又は複数の入力又はオペランドを算術論理演算ユニットに提示し、算術論理演算ユニットに、算術論理演算ユニットの入力に提供された命令コードに少なくとも部分的に基づいて結果を生成させる。少なくとも1つの実施例では、プロセッサによってALUに提供される命令コードは、プロセッサによって実行される命令に少なくとも部分的に基づいている。少なくとも1つの実施例では、ALU内の組み合わせ論理が入力を処理し、プロセッサ内のバスに置かれる出力を生成する。少なくとも1つの実施例では、プロセッサをクロックすると、ALUによって生成された結果が所望の場所に送られるように、プロセッサは出力バス上の宛先レジスタ、メモリの場所、出力デバイス、又は出力ストレージの場所を選択する。
【0331】
本文書では、アナログ又はデジタル・データをサブシステム、コンピュータ・システム、又はコンピュータ実装マシンで取得、収集、受信、又は入力することについて参照を行うことができる。少なくとも1つの実施例では、アナログ及びデジタル・データの取得、収集、受信、又は入力のプロセスは、関数呼び出し又はアプリケーション・プログラミング・インターフェースへの呼び出しのパラメータとしてデータを受信することなど、様々なやり方で達成することができる。いくつかの実装例では、アナログ又はデジタル・データの取得、収集、受信、又は入力のプロセスは、シリアル又はパラレル・インターフェースを介してデータを転送することによって達成することができる。別の実装例では、アナログ又はデジタル・データの取得、収集、受信、又は入力のプロセスは、コンピュータ・ネットワークを介してデータを提供エンティティから収集エンティティに転送することによって達成することができる。アナログ又はデジタル・データの提供、出力、伝送、送信、又は提示についても参照を行うことができる。様々な実例では、アナログ又はデジタル・データの提供、出力、伝送、送信、又は提示のプロセスは、関数呼び出しの入力又は出力パラメータ、アプリケーション・プログラミング・インターフェースのパラメータ、又はプロセス間通信メカニズムとしてデータを転送することによって達成することができる。
【0332】
上記の議論では、説明された手法の実装例を示しているが、他のアーキテクチャを使用して説明された機能を実装することもでき、本開示の範囲内であることを意図している。さらに、上記のように、議論の目的で特定の役割の分配が定義されているが、状況に応じて、様々な機能及び役割を異なるやり方で分配及び分割することができる。
【0333】
さらに、主題は構造的特徴及び/又は方法論的行為に特化した言語で説明されているが、添付の特許請求の範囲における請求項に係る主題は、必ずしも説明される特定の特徴又は行為に限定されないことを理解されたい。むしろ、具体的な特徴及び行為は、特許請求の範囲を実装する模範的な形態として開示されている。
【0334】
本開示の主題は、法的要件を満たすために、本明細書では具体的に説明されている。しかしながら、説明自体は、本開示の範囲を限定することを意図しているわけではない。むしろ、本発明者は、請求項に係る主題が他のやり方でも具体化され、他の現在又は将来の技術とともに、本文書に説明されるものと同様の異なるステップ又はステップの組み合わせが含まれるように企図している。さらに、本明細書では、「ステップ」及び/又は「ブロック」という用語を使用して、採用される方法の異なる要素を暗示し得るが、これらの用語は、個々のステップの順序が明示的に説明されていない限り、また、そのような場合を除き、本明細書に開示されている様々なステップ間の任意の特定の順序を意味するものと解釈されるべきではない。
【0335】
他の変形形態は、本開示の趣旨内にある。したがって、開示された手法は様々な修正及び代替構造が可能であるが、その特定の例示の実施例は、図面に示され、上記で詳細に説明されている。しかしながら、本開示を、開示された特定の1つ又は複数の形式に限定する意図はなく、逆に、添付の特許請求の範囲に定義されているように、あらゆる修正、代替構造、及び本開示の趣旨及び範囲内に収まる均等物を対象とすることを意図していることが理解されるべきである。
【外国語明細書】