PARTNER-Jet2がR-Carの性能を最大限に引き出す。

ルネサスエレクトロニクス(以下、ルネサス)は、以前から自動車分野を注力分野のひとつとしてきており、制御系や情報系に向けた多くのソリューションを提供してきている。情報系に向けたSoCであるR-Carの第二世代の出荷を開始している。R-Carは第二世代から内部バスのトラフィックが計測可能な機能を追加し、京都マイクロコンピュータ(以下、KMC)のJTAGエミュレータ「PARTNER-Jet2」で、バストラフィックがリアルタイムかつビジュアルに計測できるようになった。

メインイメージ

幅広いラインアップと3つのコンセプト

もはや自動車は、動くコンピュータと言っても良いほど、エレクトロニクス化が進んでいる。ECU(Electronic Control Unit)に代表される制御系はもちろんのこと、カーナビゲーションシステムなどに代表されるCIS(Car Information System:車載情報システム)の普及もめざましい。

ルネサスは、CISに向けたSoCとしてR-Carを提供している。「以前からルネサスは、情報系としてSH-NaviやEMMA Carなどカーエレクトロニクス分野に向けたSoCを提供してきました。いままで複数のアーキテクチャが混在していたのですが、2011年にそれらを統合したのがR-Carです。2013年~2014年にかけて、R-Carの第二世代の出荷を開始しています」(ルネサス吉田氏)。

第二世代のR-Carは、R-Car H2、R-Car M2、R-Car E2というプレミアムからエントリーまでの幅広いラインアップを持つ。ちなみに第一世代のR-Carは、R-Car H1、R-Car M1A、R-Car E1となる(図1)。開発用ボードも各R-Carごとに用意されている。

いずれのR-CarもARM®とSHなどのマルチCPU構成としており、使用されるアプリケーションによってCPUコアを使い分けることができる。たとえば、エンジン起動時にカメラを立ち上げるとか、ラジオのチューニングなど速く起動させたいアプリケーションはSHを使用し、LinuxなどIT系のOS上で動作するアプリケーションはARMを活用することが多いという。また、以前SH向けに開発し、安定しているアプリケーションは、そのままSHで動かしたいというニーズも多く、それらに応えているとのことだ。

ルネサスでは、車のオーナーや自動車メーカーなどのニーズに応じた3つのコンセプトの「統合コックピット」を提唱している。その3つとは、(1)フレキシビリティ、(2)スケーラビリティ、(3)パーソラナイズである。フレキシビリティは、自動車メーカー各社の要求に対するマルチ仕様を実現することだ。スケーラビリティは、エントリーからプレミアムまでラインアップを持たせ、いずれのR-Carでもソフトウェアの互換性を持つことで、マルチ車種に拡張できること。パーソラナイズは、個人に応じたマルチニーズを手軽に実現できることとなる。

こういったコンセプトを満たすためのソフトウェア開発やデバッグは、複雑かつ大規模化しており、効率的な開発ツールが求められている。そのニーズに応えたのが、KMCのPARTNER-Jet2である(次ページ 図2)。PARTNER-Jet2は、PARTNER-Jetをベースに64ビットコアやバストラフィック計測に対応するなど進化させたものだ。

内部バストラフィック計測をJTAGポートでできるのは珍しい

KMCは、以前からJTAGエミュレータを中心としたデバッガに注力してきており、R-Carの多くのユーザーへの納入実績がある。しかし、最近ではソフトウェアのサイズが大きくなり、プラットフォーム系やオープンソース系のOSが使われるようになると、ユーザーのデバッグに対する要望に変化が出てきた。

「ソースコードデバッグはできて当たり前で、それに加えてバストラフィック計測など、いろいろSoC内部に探りを入れたいというニーズが出てきています。そこで第二世代のR-Carに入っている機能を用いて、バストラフィック計測ができようにしました。バストラフィック計測は、半導体メーカーが開発に使用している高価なツールやシミュレータでは可能ですが、JTAGポートで手軽にできるのは珍しいと思います」(KMC辻氏)という。CPUとメモリ間のトラフィックが性能に大きく影響する。以前のように複数のデバイスを基板上で接続していた時には、ロジックアナライザなどを用いて測定することも可能だが、R-Carのような近年のSoCは、機能が統合されているため、それもできない。

「従来はユースケースをいただき、トラフィック幅を机上で計算していました。でもその方法ですと、お客様が仕様を変るたびに再計算が必要になり、システムの動作中にリアルタイムで計測ができませんでした。そこで、R-Carの第二世代からは、バストラフィック計測ができるような機能を追加しました」(ルネサス伊藤氏)。

具体的には、バスの要所ごとにカウンタを設け、メモリ間のデータの流れをカウントすることでトラフィック数を見ている。各所にあるカウンタを一元管理する機能があり、それに対して、カウントのスタート/ストップ、カウントのパターンなどの設定をJTAGを介してプログラミングしている。「あくまで計測ツールなので、ソフトウェアの改変が不要で、CPUを止めずにバストラフィック計測が可能となっています」(KMC辻氏)。

ソフトウェア開発者にとって使い易い情報が得られる

今回のバストラフィック計測は、第二世代のR-Carに対してARM用JTAG接続のみでSoC内部のAXIバス負荷などを測定できるものだ。しかも、測定用のソフトウェアやハードウェアの改変が不要、ARM用JTAGさえ接続すれば製品出荷用ROMでも計測可能、Cortex®-A15/A7プロセッサのPMU(Performance Monitor Unit)を利用しキャッシュヒット率などを同時に測定できるなど、多くの特長を持つ。

こういったことができるのは、ARMのデバッグアーキテクチャであるCoreSight™に寄るところが大きい。通常のCPUを介してデバッグすることに加え、CoreSightのオプションであるAXI-APを用いることで、CPUを介さずにカウンタを統合する機能ブロックにアクセスし各種設定が可能となったからだ。「CPUを介するデバッグでは、CPUを止めない限りメモリを読むことはできません。今回のバストラフィック計測の肝は、CPUを介さずに測定していることです。また、PARTNER-Jet時代から培ってきたKMCの高速JTAG制御技術があるため、高精度・正確な計測を実現できました」(KMC辻氏)。「しかも、計測対象となるソフトウェアを変えずに済むことは、お客様にとっても大きなメリットがあります。測定のためのプログラムを作る必要がなく、実機に付いているデバッグポートを使用できます」(KMC由良氏)。「SoC内部のバストラフィック計測ツールは、シミュレーションのものがほとんどなので、今回のPARTNER-Jet2のように実システムでリアルタイム計測できるのはほとんどなかったと思います」(ルネサス吉田氏)。

チューニングに加えさまざまな用途に対応可能

いままで見えなかったバス負荷が見えるようになると、バストラフィック計測によるチューニングに加え、さまざまな用途に対応できるようになる。

「バス負荷を上げるようなプログラムを書いたとき、CPUはキャッシュを使ってしまうのでバス負荷が思ったように上がらないことが多く、バス負荷を上げるプログラムを書くのは意外と難しいものです。このツールを用いることでバス負荷を上げたときの状況を見ることができます」(KMC辻氏)。

「自動車のアプリケーションは特に高い信頼性が求められますので、バスの使用率やピーク時の値を前もって知っておくことがポイントとなります。バストラフィック計測ツールを用いることで、いろいろな条件でピークを越えないようにシステムを設計することが可能になります」(KMC由良氏)。

バスの負荷とソフトウェアの相関を把握することが必要になることから、キャッシュのヒット率/ミス率をバス負荷の計測と同じ時間軸で表示できるようにした。さらに、命令の実行状況を表示することで、ソフトウェア自体のビジー状態とバス負荷の状況を合わせて表示できるなど、長年デバッカを提供してきたKMCならではの機能が盛り込まれている。

バスの状態の把握と検証を手軽にできるのが最大のメリット

ユーザーにとってこのツールを使うことの最大のメリットは、状態の把握と検証にある。「たとえば、ある程度開発が進んだシステムで、画面の一部が欠けるとか音が飛ぶなどの不具合が起きたとき、バスの問題かもしれないなど、不具合の要因の切り分けが可能になります」(KMC由良氏)。「まずは状況を把握し、そして改善する。その後で、きちんと改善されたのかを検証する必要があります。そのためにも手軽にバストラフィックを計測できるツールは有用です」(KMC辻氏)。さらに、計測のための特別な準備が不要な点も大きなメリットである。いままで、こういった計測を行う場合、バスの負荷を重くしたダミーのプログラムを用意するなど手間が必要だった。今回のツールでは、ダミーのプログラムなどを一切用意することなく、実システムで計測できる。

「ダミーのプログラムの使用など実システムのプログラムに手を入れると、バスの負荷が変化したり、全体の挙動が変わってしまうことがあります」(ルネサス吉田氏)。さらに、手を入れたプログラムを再ビルドするだけでも多くの時間がかかってしまうことも避けられる。

ルネサス側のメリットとして、吉田氏は、まずはお客様にとって問題点を洗い出せることで開発の効率化が図れること。次に、ルネサスとして、SoC開発に際して内部バスや各ブロックの動きの最適化を手軽に図れることを挙げた。

今後はよりソフトウェアとの連動性を高めていく

バストラフィック計測ツールの今後として、よりソフトウェアとの連動性を高めていくという。「現在、関数とバス負荷の関連性を見ることができる専用ソフトウェアを開発中しています。これによって、バス負荷を高めている関数を特定することができ、きめ細かなチューニングが可能になります」(KMC由良氏)。

また、PARTNER-Jet2とのさらなる統合、 ソフトマクロ方式のトレースへの対応、専用プローブの追加でLCDのLVDS(Low Voltage Differential Signaling)のロギング、外部インタフェースのロギングなども可能にしていくという。

「今回のバストラフィック計測は、R-Carに計測機能が搭載されていたからこそ実現できたものです。しかし、オンチップデバッガが進化してきたように、今後はバストラフィック計測のための機能が一般化していけば、他のSoCでもできるようになるでしょう」(KMC辻氏)。「第三世代のR-Carには、さらに細かくバス負荷を見られるようにしていきますのでご期待ください」(ルネサス伊藤氏)とのことだ。

技術的な無理難題を言い続けて欲しい

「今回、R-Carに向けたバストラフィック計測ツールをKMCさんと一緒に開発してきました。ルネサスとしては、今後CISの高性能化に応えるべく、大規模化/複雑化するチップセットの開発に注力していきます。また、いままでになかったような複雑なソフトウェア開発やデバッグなどのニーズに対して、パートナーと共に次々に新しいソリューションを提供していきます」(ルネサス吉田氏)。 「高性能なSoCを活かすのはソフトウェアです。お客様が最もコストをかけているのがソフトウェア開発であり、今回のようなツールを活用することで、少しでも効率を上げることができるでしょう」(ルネサス伊藤氏)。

「『速くて使い易い』をコンセプトにしたJTAGデバッガを提供してきました。そのコンセプトに加え、『常に進化し続けるツール』でありたいと思っています。PARTNER-Jetは提供から10年以上経過しますが、ハードウェアの改版なしにソフトウェアの進化のみで常に最新のアーキテクチャに対応してきました。もちろんPARTNER-Jet2もそのように進化させていきます。購入した後も常に進化し続けるツールを提供していきますので、技術的な無理難題を言い続けて欲しいと思います」(KMC辻氏)。

さらに由良氏は、「PARTNER-Jetは進化し続けてきましたが、デバッガの範疇を出ていなかったと思います。R-CarのようにSoCが大規模化した現在、デバッガに加えバストラフィック計測ツールなど、違うアプローチにツールが求められています。そういったニーズにもKMCはお応えし続けていきます。PARTNER-Jet2も5年後には別の形になっているのではないかと思いますので期待していてください」と締めくくった。