7 自動車 機能安全へのマルチコア適用

7.1 はじめに

安全性が欠かせない自動車の組込み機器では、コンピューティングパワーのニーズが急速に高まり、複雑さが増している。自動車の安全に関する国際規格においても、半導体に関する重要性が増しており、 2018年12月に公開された機能安全規格の2nd Edition であるISO 26262:2018では、半導体に関する章が新設されている。本稿では、 ISO 26262:2018 で記載されているマルチコアプロセッサを設計に用いる際の規格の要求事項について説明する。また、組み込み開発者がマルチコアを新規に採用する際に直面する課題についても説明する。

7.2 テクノロジーの進化

図 1: テクノロジーの進化

7.3 マルチコアテクノロジの必要性

あるシステムでは、マルチコアプロセッサを使用して必要な目標を達成するのは自然な解決策であるが、他の方法で効率的に実現できることもある。 一方で、マルチコアプロセッサは過剰品質のように見えることもあるかもしれないが、良い設計の選択肢にもなり得る。

このように、自動車のシステム開発の課題に取り組む前に、マルチコアが本当に必要かどうかという疑問に対処することはプロダクト開発において非常に重要である。

ここでは、マルチコアの必要性を3つに分類して扱う。

  • 安全性の向上
  • パフォーマンスの向上
  • 効率の向上

どのような機能を達成したいのか?なぜマルチコア技術がこのシステムに役立つのか?

マルチコア採用時はこれらの疑問に対する回答を明確にすることが必要である。

図 2: マルチコアテクノロジの必要性

7.4 機能安全規格 ISO 26262 2nd Edition

  • Guidelines on application of ISO26262 to semiconductors
    • 自動車用途に使用される半導体のガイドラインを提供する
    • 半導体コンポーネントの開発
      • 半導体コンポーネントはエレメントの1つとして安全分析を行う
    • 半導体コンポーネントに関するガイドライン
    • 半導体技術に関するガイドライン
図 3: Guidelines on application of ISO26262 to semiconductors(引用:ISO26262-11:2018)

本節ではISO 26262:2018 で記載されているマルチコアを設計に用いる際の規格の要求事項について説明する。

7.4.1 ISO 26262 : 2018 Part6 (ソフトウェア開発) clause5

モデリングガイドラインとコーディングガイドラインでカバーすべき内容にマルチコアに搭載したソフトウェアの同時処理が追加された。

Topics ASIL
A B C D
1i Representation of concurrency aspects f + + + +
f Concurrency of processes or tasks may be a topic when executing software in a multi-core or multi-processor runtime environment

Topics to be covered by modelling and coding guidelines (引用:ISO26262-6:2018)

7.4.2 ISO 26262 : 2018 Part11(半導体) clause5

複数のコアに安全要求をデコンポジションして割り当てた場合、当然妥当性説明必要になる。

すなわち、コア間の従属故障と共通原因故障がないことを安全分析結果から示すことになる。

図 4: ASIL decomposition in the context of multi-core (引用:ISO26262-11:2018)
図 5: Generic diagram of a dual-core system (引用:ISO26262-11:2018)

7.4.3 ISO 26262:2018 Part11 clause5

自動車の製品開発プロジェクトでは、異なるソフトウェアモジュールを1つの制御ユニットに組み合わせてコストを節約することがある。このような開発状況でマルチコアプロセッサを利用する場合、コア間でセーフティクリティカルなモジュールへの潜在的な干渉が無いことを論証する必要がある。

マルチコアに搭載したソフトウェアに対して、無干渉の妥当性説明が追加された。

すなわち、ソフトウェアの従属故障分析が必要となる。

図 6: ソフトウェアコンポーネント間の非干渉IS0 26262 (引用:ISO26262-11:2018)

仮想技術の有効性も記載されている。

7.4.4 ISO26262:2018 Part11 clause5

マルチコアに搭載したソフトウェアコンポーネントのタイミング故障に関する分析と適切な方策が要求されている。

引用:ISO26262-11:2018

7.4.5 ソフトウェアコンポーネント間の非干渉IS0 26262

  • エレメント共存の法則
    • ソフトウェアメカニズムでFFIを保証する場合は、共存させるASILの中で高い方のASILで実装される。
ソフトウェアコンポーネント間の非干渉IS0 26262

7.4.6 2nd Edition の追加トピックスから読取れる主な機能安全設計課題

  • 安全要求を満たすと同時に、並行性の効果を最大化する
  • 並行処理に適切な設計法及び表記法を用いる
  • 並行処理特有のフォールトに対し従属故障分析を行い、コア間の非干渉を達成する
  • 主機能の可用性を継続しながら、いくつかのアプリケーションをシャットダウンすることができるフェイルオペレーショナルな安全アーキテクチャを設計する

7.5 マルチコア適用の機能安全プロセス

図 7: マルチコア適用の機能安全プロセス

7.6 マルチコア適用の機能安全アーキテクチャデコンポジションの例

図 8: マルチコア適用の機能安全アーキテクチャデコンポジションの例

7.7 並行処理でのソフトウェアフォールトの例

  • スケジューリングエラー
  • 共有メモリエラー
図 9: 並行処理でのソフトウェアフォールトの例

7.8 ソフトウェアフォールト伝搬の例

  • タイミングエラー
図 10: ソフトウェアフォールト伝搬の例

7.9 FFI対応:Memory Protection による共有メモリアクセス制御

図 11: FFI対応:Memory Protection による共有メモリアクセス制御

7.10 FFI対応:Program Flow Monitor によるタイミング保護

アプリケーション内のチェックポイントに加え、フローを監視することで正しいシーケンスを保証する。

図 12: FFI対応:Program Flow Monitor によるタイミング保護

7.11 分散・並列処理ソフトウェアのデザインパターン

図 13: 分散・並列処理ソフトウェアのデザインパターン

7.12 まとめ

  • コアへの安全要求の配置、ASIL共存及び非干渉化の効率的な実現がマルチコア適用のカギ
  • マルチコアを安全設計で使用する場合、分散・並列処理アーキテクチャ設計技術が必要となる。
  • 分散・並列処理アーキテクチャにはデザインパターンを活用することで効率化と信頼性の確保に貢献できる