マルチコア向けのソフトウェア開発において必要になる、ソフトウェアの分析、並列化のための分割、ハードウェアリソースへのマッピングを自動化します。今までの手動による開発に比べて、生産性の向上、性能リスクの早期分析、マルチコア化による効率予測をツールが実現します。
マルチコア向けソフトウェア開発の自動化
SLX Tool Suiteでは、同一種類のプロセッサによるマルチコア(ホモジニアス構成)に限らず、異なるプロセッサが混在した構成(ヘテロジニアス構成)に対応しています。例えば、Arm社のbigLITTLEなど、性能の異なるコアが混在した構成において、それぞれのコアの性能特性を見ながら、処理の最適なコア割り当てを検討することが出来ます。
SLX Tool Suiteの対応予定ロードマップ
(Deep Learning accelerator, GPUは今後のバージョンで対応予定)
SLX Tool Suiteでは、大きく以下の3つの機能で構成されています。
SLXのワークフロー
SLX C/C++フローでは、シーケンシャルCソースコードを入力とし、 静的解析技術、動的解析技術を用いて、分割可能な箇所の分析を行います。分割結果は、後述のSLXデータフロー解析で最適なコア配置を分析するために、ソフトウェアを小さな処理単位のネットワークで表現した形式(CPN = "C for Process Networks")に、半自動で変換します。あるいは、標準的な並列化APIであるOpenMPに対応したソースコードとしてエクスポートすることもできます。
関数コールフローの解析および処理負荷のホットスポットを抽出
グローバル変数のアクセスの解析
ソフトウェアの分割可能箇所の提示
SLX Tool Suiteは、前述のSLX C/C++フローを利用して作成した、CPNを入力として、ターゲットハードウェアのコアへの最適な配置を生成します。さらに、ユーザがリアルタイム制約やリソース制約を指定して、解を求める際に加味させることができます。
コアへの処理の割り当て
抽象化されたターゲットハードウェアの情報を用いて、パフォーマンスの見積もりおよび消費電力の見積もりを行うことができます。下記の画面例の解析結果は、マイコンボードに実装・実測するよりも前に、ツール上で見積もりを行うことが可能です。これにより、並列化後の性能リスクを早期に分析することができます。
システムのスループットの見積もり
時間軸に対する各コアの稼働状況の見積もり(ガントチャート)
各コア間の通信量の見積もり
SLX Tool Suiteは、独自のsource-to-sourceコンパイラ技術を用いて、マルチコアターゲット向けに並列化されたCソースコードを生成します。前述のSLXデータフロー解析で生成したコア配置の決定に基づき、また、同期や通信のためのAPIは最も適したものが選択されます。SLX Tool Suiteは、pthread、SystemC、MPIなど、標準的な並列プログラミングインターフェースをサポートしています。さらに、顧客からの要望に応じて、新たなバックエンドを開発することも可能です。
車載システムのソフトウェア開発に向けて、AUTOSAR規格に対応したワークフローを提供しています。
SLX Automotiveでは、AUTOSAR Classic Platformの規格に沿って作られたソフトウェアシステムに対して、データの依存性を考慮した上で、ランナブルレベルでの並列実行の可能性を解析します。
SLX Automotiveでは、最終的に、コア割り当てを最適化したAUTOSAR設定ファイル(arxml)を生成します。コード生成の処理は、各社から提供されているAUTOSAR準拠のツールを利用しますので、AUTOSARの既存のワークフローを崩さずに、コア配置の最適化を適用することが出来ます。
SLX Automotive のワークフロー
AUTOSARのソフトウェアコンポーネントの依存関係の解析
依存関係を踏まえたランナブルの実行スケジュールの解析
SLX Tool Suiteは、AMALTHEAモデルのインポート、エクスポートを行うことが出来ます。AMALTHEAは欧州のITEAで開発された、マルチコアシステム向けのソフトウェアプラットフォームです。AMALTHEAモデルを利用することで、AUTOSARのarxmlを利用していないソフトウェアに対しても、システムレベルの解析を行うことが出来ます。
AMALTHEAモデルのタスクグラフ