ツール

TOOLS

SILEXICA

マルチコア向けソフトウェア並列化ツール
既存のシングルコア用ソースコードをマルチコア向けに並列化

近年、プロセッサの性能向上は、マルチコア化の方向に進んでいます。それに伴い、組込みソフトウェア開発においても、マルチコアアーキテクチャへの対応が急務となっています。しかしながら、既存のシングルコアのソフトウェア資産を活用した上で、マルチコアへ移行するには、複雑性の増加と、性能見積もりの困難さが課題となります。ゆえに、増加するコア数に対して、ハードウェアリソースを効率的に利用するためには、ソフトウェアの自動設計ツールの支援が重要です。

Silexica社のSLX Tool Suiteは、既存のシングルコア向けのソースコードを分割し、ハードウェアリソースにマッピングする機能を提供します。 また、抽象化されたハードウェア情報記述に基づき、ヘテロジニアス、ホモジニアスの両マルチコア環境について、処理性能および消費電力の見積もりを行うことが出来ます。SLX Tool Suiteを使うことで、ハードウェアリソースに最適に配置されたソフトウェアを開発することが可能となります。

SLX Tool Suiteの特徴

マルチコア向けソフトウェア開発の自動化

マルチコア向けのソフトウェア開発において必要になる、ソフトウェアの分析、並列化のための分割、ハードウェアリソースへのマッピングを自動化します。今までの手動による開発に比べて、生産性の向上、性能リスクの早期分析、マルチコア化による効率予測をツールが実現します。

slx parallelizer

マルチコア向けソフトウェア開発の自動化

ヘテロジニアスな環境へのSLXの適用

SLX Tool Suiteでは、同一種類のプロセッサによるマルチコア(ホモジニアス構成)に限らず、異なるプロセッサが混在した構成(ヘテロジニアス構成)に対応しています。例えば、Arm社のbigLITTLEなど、性能の異なるコアが混在した構成において、それぞれのコアの性能特性を見ながら、処理の最適なコア割り当てを検討することが出来ます。

slx parallelizer

SLX Tool Suiteの対応予定ロードマップ
(Deep Learning accelerator, GPUは今後のバージョンで対応予定)

SLX Tool Suiteの製品構成

SLX Tool Suiteでは、大きく以下の3つの機能で構成されています。

  • SLX C/C++ フロー
    • シングルコア向けのC/C++ソースコードを解析し、並列化が可能な箇所と、並列化した場合の見込み性能を示します。
  • SLX データフロー解析
    • コア毎の処理性能や、各処理間のデータの待ち合わせ関係などを考慮して、最適なコア割り当てを求めます。
    • また、コア割り当ての結果に対して、ツール上で性能の見積もりを行うことができます。これにより、実際にマイコンボードで実測するより前の段階で、並列化後の性能を把握することができ、性能問題による手戻りと開発工数を大幅に削減することができます。
  • SLX Automotive
    • 特に、車載システムのソフトウェア開発に向けて、AUTOSAR規格に対応したワークフローを提供しています。
    • SLX Automotiveでは、AUTOSAR Classic Platformの規格に沿って作られたソフトウェアシステムに対して、データの依存性を考慮した上で、ランナブルレベルでの並列実行の可能性を解析し、コア割り当てを最適化したAUTOSAR設定ファイル(arxml)を生成します。

slx parallelizer

SLXのワークフロー

SLX C/C++フロー

slx parallelizer

ソフトウェアの分割可能箇所の抽出

SLX C/C++フローでは、シーケンシャルCソースコードを入力とし、 静的解析技術、動的解析技術を用いて、分割可能な箇所の分析を行います。分割結果は、後述のSLXデータフロー解析で最適なコア配置を分析するために、ソフトウェアを小さな処理単位のネットワークで表現した形式(CPN = "C for Process Networks")に、半自動で変換します。あるいは、標準的な並列化APIであるOpenMPに対応したソースコードとしてエクスポートすることもできます。

slx parallelizer

関数コールフローの解析および処理負荷のホットスポットを抽出

slx parallelizer

グローバル変数のアクセスの解析

slx parallelizer

ソフトウェアの分割可能箇所の提示

SLX データフロー解析

slx parallelizer

コアへの最適な配置を生成

SLX Tool Suiteは、前述のSLX C/C++フローを利用して作成した、CPNを入力として、ターゲットハードウェアのコアへの最適な配置を生成します。さらに、ユーザがリアルタイム制約やリソース制約を指定して、解を求める際に加味させることができます。

slx parallelizer

コアへの処理の割り当て

パフォーマンスおよび消費電力の見積もり

抽象化されたターゲットハードウェアの情報を用いて、パフォーマンスの見積もりおよび消費電力の見積もりを行うことができます。下記の画面例の解析結果は、マイコンボードに実装・実測するよりも前に、ツール上で見積もりを行うことが可能です。これにより、並列化後の性能リスクを早期に分析することができます。

slx parallelizer

システムのスループットの見積もり

slx parallelizer

時間軸に対する各コアの稼働状況の見積もり(ガントチャート)

slx parallelizer

各コア間の通信量の見積もり

並列化されたソースコードの自動生成

SLX Tool Suiteは、独自のsource-to-sourceコンパイラ技術を用いて、マルチコアターゲット向けに並列化されたCソースコードを生成します。前述のSLXデータフロー解析で生成したコア配置の決定に基づき、また、同期や通信のためのAPIは最も適したものが選択されます。SLX Tool Suiteは、pthread、SystemC、MPIなど、標準的な並列プログラミングインターフェースをサポートしています。さらに、顧客からの要望に応じて、新たなバックエンドを開発することも可能です。

SLX Automotive

AUTOSAR Classic Platformのソフトウェア開発におけるマルチコア活用をサポート

車載システムのソフトウェア開発に向けて、AUTOSAR規格に対応したワークフローを提供しています。
SLX Automotiveでは、AUTOSAR Classic Platformの規格に沿って作られたソフトウェアシステムに対して、データの依存性を考慮した上で、ランナブルレベルでの並列実行の可能性を解析します。

SLX Automotiveでは、最終的に、コア割り当てを最適化したAUTOSAR設定ファイル(arxml)を生成します。コード生成の処理は、各社から提供されているAUTOSAR準拠のツールを利用しますので、AUTOSARの既存のワークフローを崩さずに、コア配置の最適化を適用することが出来ます。

slx parallelizer

SLX Automotive のワークフロー

slx parallelizer

AUTOSARのソフトウェアコンポーネントの依存関係の解析

slx parallelizer

依存関係を踏まえたランナブルの実行スケジュールの解析

AMALTHEAモデルのサポート

SLX Tool Suiteは、AMALTHEAモデルのインポート、エクスポートを行うことが出来ます。AMALTHEAは欧州のITEAで開発された、マルチコアシステム向けのソフトウェアプラットフォームです。AMALTHEAモデルを利用することで、AUTOSARのarxmlを利用していないソフトウェアに対しても、システムレベルの解析を行うことが出来ます。

slx parallelizer

AMALTHEAモデルのタスクグラフ

ページトップへ戻る

製品・サービスの資料請求・お問い合わせはこちら