<E/Eアーキテクチャの進化>
自動運転や電動化,コネクテッド技術の進化に伴い、自動車の電子・電気制御(E/Eアーキテクチャ)は複雑化・高度化が進んでいます。ECU(電子制御ユニット)の中には複数のマイクロプロセッサが搭載され、それらが連携しながら動作しており、更にE/Eアーキテクチャ全体では複数のECUが連携して動作するといったように、非常に大規模かつ複雑なシステムへと変化してきています。クルマ一台あたりに搭載される車載用マイクロプロセッサは数十個以上、ソフトウェアの規模も5000万行を超えるとも言われています。
2021年10月に当社から発表したR-Car S4は、高性能かつ多様な高速ネットワークに対応した、最先端のE/Eアーキテクチャの中核となるデバイスです。このR-Car S4には、Arm Cortex-A52,Arm Cortex-R55,G4MH/RH850といった複数のマイクロプロセッサが搭載されています。これらのマイクロプロセッサ上のソフトウェアは、プロセッサを跨いで互いに連携しながら、車載ネットワークと車外ネットワークを安全につなぐゲートウェイ機能のような、新しいE/Eアーキテクチャで必要とされる高度なアプリケーションを実現します。
<マルチコアシステムのデバッグ>
このような複数のマイクロプロセッサ上で連携して動作するソフトウェアを開発することを考えてみましょう。例えば、R-Car S4に搭載されているArm Cortex-A52,Arm Cortex-R55,G4MH/RH850のマイクロプロセッサそれぞれのソフトウェアが連携して動作している状態で、G4MH/RH850のソフトウェアに何かの異常が発生したと仮定します。(図2)
従来のデバッグ手法では、G4MH/RH850の動作を止めてレジスタやメモリ,変数の状態を、デバッガを使って調べます。ところが、G4MH/RH850の動作を止めても、Arm Cortex-A52,Arm Cortex-R55はそのまま動作していますので、G4MH/RH850のソフトウェアで問題が起きた時にArm Cortex-A52やArm Cortex-R55のソフトウェアで何が起きていたのか見ようとしても、停止せずに先に進んでしまっているか、G4MH/RH850のソフトウェアを止めたことで動作状態が変ってしまい、問題点にたどり着けないこともあります。
今回リリースしたマルチコアデバッグ&トレースツールを利用した同期デバッグ機能では、あるタイミングで同期して実行・停止が可能となるため、異常の発生したタイミングでのレジスタやメモリ,変数の状態とソフトウェアの状態を確認することが可能になります。その結果、問題の解析や原因特定を効率的に行うことができます。
またマルチコアデバッグ&トレースツールのもう一つの機能である同期トレースを使うと、問題解析だけでなく、実行速度のボトルネックも一目瞭然で確認することができ、性能改善にも活用できます。例えば図3のように、従来のトレース機能では、それぞれのマイクロプロセッサの関数の遷移を確認してソフトウェアの動作の流れを確認していました。しかし、それぞれのトレースの時間軸が異なっているため、連携動作しているソフトウェアの流れを把握することは困難です。これが同期トレース機能を使えば、全てのマイクロプロセッサのトレース結果の時間軸が同じになり、それぞれのソフトウェアの動作の流れが一目瞭然に把握でき、問題解析や性能改善の検討を非常に容易に行うことができます。
今回ご紹介した同期デバッグ機能については、ビデオにてデモンストレーション、解説していますので、こちらも合わせてご覧ください。
<今後の展開>
マルチコアデバッグ&トレースツールは複雑に絡みあうE/Eアーキテクチャで実行されるソフトウェアの動作解析を行うことができる強い味方です。今回リリースしたツールは、R-Car S4のような単一のSoCの中に実装される複数のマイクロプロセッサをターゲットとしています。今後は、これをECU(Electronic Control Unit)レベルでのソフトウェア開発をさらに効果的に進められるように、複数のデバイス間で連携動作するソフトウェアの同期デバッグ&トレースへの対応や、今回同時に発表したVirtual Turnkeyへの対応も進めていく予定です。