富士通テン株式会社様

エンジンECUのマルチコア化には動的解析が有効、性能に影響を与える排他制御処理を速やかに検出

FUJITSU TEN
企業名:
富士通テン株式会社
事業内容:
車載機器などの開発・販売
導入製品:
動的解析ツール「TRQerS」
適用目的:
マルチコアソフトウェア開発の先行研究、性能改善

富士通テンは、車載機器やインフォテインメント機器を開発・販売しているメーカ。自動車の燃費向上を支えるエンジン制御ECUを開発し、さまざまな自動車メーカに納めている。
そんな同社は、2013年ころからエンジン制御ECUのマルチコア化に取り組んでいる。複数のCPUコアを搭載するマイコン上で動作する制御ソフトウェアの性能改善などに、動的テスト/解析ツール「TRQerS」を活用した結果、例えば人手では2週間近くかかる解析作業が3日程度で済むようになった。
ここでは、エンジン制御ECUのマルチコア化の取り組みについて、同社 AE技術本部 先行システム開発部 奥原 誠氏に話を伺った。

富士通テン株式会社 AE技術本部 先行システム開発部 奥原 誠(おくはら・まこと)氏

2006年、富士通テンに入社。マイコン周辺のプラットフォームの先行検討を主に担当。エンジン制御を効率よく処理するためにマイコンの機能をどのように活用するか、柔軟な発想力で日々探求している。

適用対象
マルチコアへの移行が始まったエンジン制御ECU
ツールの選定
マイコン非依存や設定GUIなどが採用の決め手に
トラブルシューティング
数千以上の排他制御にチェックポイントを一括挿入
TRQerSの評価
解析作業の効率化と目標性能達成の両方を実現

適用対象

マルチコアへの移行が始まったエンジン制御ECU

自動車には継続的な燃費の向上と排ガス規制への対応が求められている。それに伴ってエンジン制御のアルゴリズムは複雑になり、エンジン制御を担うECU(electronic control unit)に要求される性能も年々上昇している。エンジン制御ECUは車両制御に特化したマイコンを搭載した弁当箱サイズの組み込みコンピュータで、シリンダ内部の空気と気体燃料の質量比が最適になるように、燃料供給量や噴射タイミング、点火タイミングなどを制御する。

図1 エンジン制御ECUの役割

エンジン制御ECUは、エンジンルームなどの高温環境下に設置されることが多い。そのため、搭載するマイコンの性能を引き上げる際に、デバイスの発熱や信頼性の問題があるため、動作周波数を上げにくいという課題がある。そこで最近では、動作周波数を上げるのではなく、内部のCPUコアの数を増やし、プログラムの並列実行によって処理性能を引き上げよう、という取り組みが進んでいる。

富士通テンでは、エンジン制御ECUのマルチコア化の検討を、2013年ころから始めている。2015年末に先行研究が終わり、現在はその成果を製品に反映するための準備に入っている。ただし、2年間に及んだ先行研究の道のりは、決して平坦なものではなかったようだ。

「なんとかマルチコア向けのソフトウェアを作成し、2コアのマイコンを搭載したECU上で動作を確認したのですが、測ってみるとシングルコアと同等か、もしくはそれ以下の性能しか出ていません。これはショックでした。CPUコアが二つあるのに、1個ぶんの性能も出ないなんて。『これでは使いものにならない』という話になりました(奥原氏)。

ツールの選定

マイコン非依存や設定GUIなどが採用の決め手に

富士通テンは当初、制御プログラムに人手で独自のデバッグコードを埋め込み、性能解析を行うことを考えていた。しかし、この方法にはいくつかの問題があった。まず、デバッグコードを埋め込む箇所の数が多く、作業工数が大きくなることが予想された。また、デバッグコードの追加に起因する処理のオーバーヘッド(実行タイミングの遅延)が大きい、必要なメモリ容量が増加する、解析結果の評価に時間がかかるなどの問題もあった。

「2012年11月に開催された組み込み技術の展示会(Embedded Technology 2012)で、adviceLUNAのシステムマクロトレース(TRQerSの前身となった機能)のデモ展示を見ました。評価した結果、これは使えそうだと思い、ツールの導入に踏み切りました」(奥原氏)。

以下の四つのポイントが決め手となり、同社はTRQerSの採用を決めたという。
● 汎用ピン(GPIO)があれば、どのマイコンにも適用できる
● GUIを使ってチェックポイントを簡単に埋め込める
● マルチコアの動作状況が視覚的に分かりやすい
● タスク単位、関数単位のプロファイル機能があり、性能分析に有効

「当時、マルチコアに対応した組み込み系のツールは、今ほど多くありませんでした。TRQerSと同じような解析ツールも幾つかあったのですが、それらは適用できるマイコンの種類が限られていました。先行研究の段階ではマイコンをいろいろと変えながら試行することが多いので、この制約は厳しいと思いました」(奥原氏)。

同社は、導入したTRQerSをマルチコア検討用のエンジン制御ECU(図2)につないで動作させ、マイコンの実行履歴を取得した。その情報をもとに、性能劣化の要因となる箇所を速やかに検出できることを確認した。

図2 マルチコア検討用エンジン制御ECUのデバッグ用I/F

トラブルシューティング

数千以上の排他制御にチェックポイントを一括挿入

マルチコア対応のソフトウェアを開発する場合、タスクの分割と各コアへの割り付け(機能配置)を考慮しながら、(シングルコア上で動作する)逐次プログラムを、複数コア上で動作する並列プログラムに書き換える必要がある。上述のとおり、富士通テンが作成した並列プログラムの当初の性能は、シングルコアの場合の0.9~1.0倍にとどまっていた。

「性能が出ない原因が、最初は分かりませんでした。シングルコアからのプログラムの変更内容に対してどの程度の処理負荷(実行時間)がかかっているのか、などを調べ始めました」(奥原氏)。

マルチコア向けの変更箇所は、いくつかあった。まずリアルタイムOSがシングルコア用からマルチコア用へ変わっていた。ユーザプログラムについては、タスクの分割と各コアへの割り付け、コア間の通信処理の追加、データ競合を避けるための排他制御処理の追加などを行っていた。

調査の結果、最後の排他制御処理がマイコンの負荷を増大させていることが最も大きな要因であると分かった。排他制御とは、並行動作するプログラムが共有メモリ(RAM)上の同一データにアクセスする際に生じる干渉(いわゆるデータ競合)を避けるために追加する処理である。同社では、スピンロックと呼ばれる方法によって排他制御を実現していた。

図3 コア間の排他制御

例えばガソリンエンジンの場合、クランク機構の中で歯車が高速に回転している。この回転に同期しながら、点火を制御するタスクや燃料噴射を制御するタスクなど、多くのタスクが共有メモリ上の同一データ(クランクの回転角や温度などの情報)にアクセスしている。

エンジン制御ECUに組み込む制御ソフトウェアには、一般にタスク間の依存関係が強い、という特徴がある。このため、排他制御を行う必要のある箇所は数千以上にのぼるという。この中から、CPUコアに大きな負荷をかけている箇所を速やかに抽出し、修正する必要があった。さらに排他制御を行うと、デッドロック(共有リソースを二つのプログラムが相互にロックしてしまい、必要なリソースが開放されないため、結果的にどのプログラムも処理が進まなくなる状態)という新たな不具合を作り込んでしまう可能性もある。こうした問題が生じないように、排他制御の処理は注意深く設計する必要があった。

TRQerSを運用し始めると、こうした問題はかなり緩和される。排他制御の関数に絞ってチェックポイントを一括挿入したり、それらの関数の実行時間を一覧表示したりできるようになるためである。ユーザは実行時間の長い箇所から順番にチェックし、CPUコアにかかる負荷が減るようにソフトウェアを修正していくことになる。

TRQerSの評価

解析作業の効率化と目標性能達成の両方を実現

富士通テンによると、TRQerSの導入により、性能改善の解析・評価にかかる期間を大幅に短縮できたという。例えば人手では2週間近くかかる解析作業が、3日程度で済むようになった。また、どのコアがどのタイミングで遊んでいるか(アイドル状態にあるか)を視覚的に確認できるようになり、マルチコアシステムの性能を引き出す機能配置の検討にも役に立った。これらの改善、およびリアルタイムOSの改善検討を積み重ねた結果、最終的に2コアのシステムにおいて、シングルコアの場合の約1.6倍の性能を引き出すことができた。

同社には、TRQerSに対する要望がある。現状、TRQerSを使用するとき、ユーザは開発対象となるソフトウェアに専用の通信ソフトウェアを組み込む必要がある。マイコンがチェックポイントの処理を実行すると、この通信ソフトウェアが起動し、外部と通信を始める(実行履歴の情報を転送する)。通信が行われている間は、ほかのソフトウェアは動けなくなる。このときの通信オーバーヘッドがシステムの挙動に影響を与えるという。

「エンジン制御のソフトウェアは高速に動作しています。そのため、わずかなタイミングの遅延でも処理負荷に与えるインパクトは大きくなります。例えば、処理の空き時間にデータを圧縮して外部に一括送信できるような機能があれば、TRQerSはもっと便利なツールになると思います」(奥原氏)。

「今回、2コアのソフトウェアの開発でも相当苦労しました。今後、6コアや8コアが必要になったとき、人手で適切に機能配置や実装ができるとは到底思えません」(奥原氏)。

現状のTRQerSは、多様なユーザシステムに適応できるよう、多くの入出力インターフェースに対応し、ハードウェアモデルは4コア(ソフトウェアモデルは32コア)のMPUまで対応している。
TRQerSの後継機種である「TRQerAM」は、スタンドアローン(パソコンなし)運用や、システムテスト時にテスターが手動でトレースデータに不具合が発生したことを記録できる機能など、いくつものユーザ要求に応えて開発された。
横河ディジタルコンピュータは、これからもユーザからの要望を取り込みながら形にし、製品を進化させていくという。