Wind River Diab Compilerにより、安全認証が求められるユースケースにおける高速かつ厳格なコードの生成を実現

Sep 15, 2021 オートモーティブ

Raju Subbian

ウインドリバーのDiabツールチェーンでコンパイルされたコードは、自動車、産業機器、航空宇宙・防衛、ネットワーク業界などで、数十億台のデバイスにデプロイされています。ミッションクリティカルなアプリケーションにとって、安全性は最も重要です。Diab Compilerは安全性が重要視される組込み市場で、パフォーマンスやコードサイズの要件への対応はもちろんのこと、安全で効果的なコードを生成する目的で、お客様から長年にわたり信頼を得ています。Diabツールチェーンは、お客様からのフィードバックや市場分析に基づいて継続的に改良を行っています。本ブログでは、その中から最近の改良についていくつかご紹介します。

Diab Compilerは、リリース当初から最先端の自社技術とイノベーションにより、業界がより新しいアーキテクチャを採用するのに合わせて、新機能の開発や新しいアーキテクチャの追加を早いスピードで実施してきました。35年以上にわたる研究開発により、Diab Compiler 5.9.xは進化を遂げました。Diab Compilerは、組込み市場で最も広く使われている32ビットと64ビットプロセッサーをサポートしています。また業界規制により、自動車および産業機器市場が機能安全規格に準拠したアプリケーション開発に移行し始めたため、コンパイラはアプリケーション開発における重要なツールとして機能安全認証要件を満たすツールチェーンとしての役割が求められるようになりました。Diab Compiler 5.9.xは業界で初めて、ISO 26262とIEC 61508規格に準拠したコンパイラを安全に使用するための認証取得に、アプリケーション開発で使用するコンパイラの機能を選択して、その機能に適合するテストをお客様の環境で実行できるToolchain Qualification Kit(QKit)の提供を開始しました。

ウインドリバーはお客様からのフィードバックをもとに、Diab Compiler 5.9.xの開発と改良を重ね、お客様が認証作業に費やしていた労力を軽減しています。Diabツールチェーンは、お客様にQKitで生成されたテストコードをデプロイし、テストしてもらう代わりに、自動車(ISO 26262)および産業機器(IEC 61508)業界で必要とされるあらゆるASILおよびSILレベルに対してTUV SUDが評価し事前認証を取得したコンパイラへと移行しました。このTUV SUD認証ツールチェーンは、セイフティマニュアルやツール認証レポートなどの必要なドキュメントを提供するだけでなく、業界初の診断用コンパイラを提供しています。コンパイラのような高度で複雑な製品にはバグがあり、組込みアプリケーション用に生成されたコードへの影響を分析する必要があります。Diab Compilerチームは、すべての不具合をウインドリバーのサポートサイトで公開し、不具合が安全性に影響を与えるか、特定のプロセッサアーキテクチャのみが影響を受けるか、これらの潜在的な不具合のトリガーとなるオプションや回避策などを注記し、お客様が影響を分析して必要な対策を講じられるよう支援しています。しかし、お客様が何百万行ものアプリケーションコードからコードのシーケンスを特定したり、トリガーとなる条件を見つけたりするのは難しいため、このような有用なデータがあるにもかかわらず特定の不具合がアプリケーションにどのような影響を及ぼすかを判断することは困難です。

診断用コンパイラのコンセプトは、Diab CompilerチームがTUV認証を取得したコンパイラの一部として提供するイノベーションです。診断用コンパイラは、同じコンパイラ製品をベースとした二次的なコンパイラですが、不具合の修正をおこなうのではなく、コンパイラの不具合を誘発するアプリケーションのコードをピンポイントで特定するための診断メッセージを送ります。重要なのは、コンパイラが不正なコードを生成したり、誤った動作をする原因となるアプリケーションのコードシーケンスを特定することです。お客様は、アプリケーションコードに回避策を適用し、診断用コンパイラで再コンパイルしてトリガー条件が存在しないことを確認することができます。お客様からは、新しく開発したコードがコンパイラの潜在的な不具合を誘発しないように、定期的に診断用コンパイラでビルドしたいという要望がありました。診断用コンパイラは、Diab Compilerのユーザがセーフティクリティカルなアプリケーション開発にかかる時間を節約し、重要な役割を果たすコンセプトの1つとなっています。このコンセプトは、アプリケーションの再評価には高いコストがかかるため、コンパイラの変更や更新が好ましくないプロジェクトで重要な最終期のマイルストーンを経過した後も、生産用コンパイラを変更しないことを支援するものです。

ウインドリバーは、VxWorksプラットフォーム用のオープンソースコンパイラGCCの開発や使用で長年の実績があります。また、Wind River Linux向けのGCCの統合と問題修正も行っています。市場がGCCやLLVMベースのコンパイラなど、より多くのオープンソース製品を活用する方向に移行したため、ウインドリバーも業界の強力なバックアップ、モダンなコードベース、開発の容易さなどから、VxWorks用のメインコンパイラとしてLLVMをデプロイしました。ウインドリバーは、LLVMベースの取り組みをDiab Compilerにも展開し、ARM向けのLLVMベースクロスコンパイラの提供を開始しています。

LLVMベースのDiab Compiler 7.x製品では、Diab Compiler 5.9.xからの移行ガイドを提供しています。GNU binutilsとともにDiabリンカーと他のバイナリユーティリティを同梱することで容易に移行できるため、Diab Compiler 7.xではGCCユーザとDiab Compiler 5.9.xユーザが簡単にアプリケーションを移行することができます。セーフティクリティカルな市場では、LLVMベースのコンパイラを採用し、改良するだけでは十分ではありません。LLVMやClang、コンパイラのランタイムライブラリに存在する不具合を継続的に分析・分類して、その不具合が安全性に影響を与えるかどうかの情報を公開する必要があります。ウインドリバーは、これまでに1万件以上の不具合を分析し、安全性への影響度合いに基づき分類をおこない、その情報をエンドユーザ向けにWind River Support Network上で公開しています。Diab Compiler 7.xでは、機能安全アプリケーション開発を支援する診断用コンパイラを提供します。また、付加価値としてシミュレーション用のQEMUを同梱しているため、パワー不足のターゲットCPU環境でもアプリケーション開発を効率的に行うことができます。

最近Diab Compiler 7.xに、ARM浮動小数点演算関連の例外を計測、チェック、処理する新機能が追加されました。この機能は、お客様のニーズに合わせて複数のオプションを提供し、カスタムハンドラをインストールすることで、これらの特例を上書きして処理できるようにするものです。

Diab Compiler 5.9.xは、TC 4xxやRenesas G4MH2などの新しいTriCoreアーキテクチャをサポートします。さらに新しい命令を活用し、パフォーマンスとサイズ向けのコードを最適化します。

Diab Compiler 5.9.xおよび7.xは、自社技術とオープンソース開発を活用することで、組込み機器に携わるお客様にとって最適な開発環境を提供するほか、コンパイラの診断や安全性に影響を与えるオープンソースの不具合の監視と情報の公開といった革新的な付加価値の高いTUV認定コンパイラを提供します。Diab Compilerは、その技術的な優位性と優れたカスタマーサポートおよびメンテナンスにより、お客様から信頼されています。