ソフトウェア / ハードウェア・システムの挙動やパフォーマンスをリアルタイムで分析

インテル® CoFluent™ Studio は、プロジェクトの初期段階におけるトレードオフ分析の基盤を提供するモデリング / シミュレーション・ツールです。システムの挙動やユースケースに関する実行可能なモデルを構築することで、インテル® CoFluent™ Studio は、あらゆる組込みシステムやチップを対象として、時系列に沿って実行可能な仕様や検証用のテストケースを提供します。また、プロジェクトのライフサイクルのどの段階でも、パフォーマンスを評価できます。

概要
インテル® CoFluent™ Studio (CoFluent) は、アーキテクチャーや設計に関してパフォーマンス評価と早期最適化を実現するシステム・モデリング / シミュレーション・ツールです。

インテル® CoFluent™ Studio は、設計空間の調査を容易にし、What-If 分析をスピードアップすることで、イノベーションを促進します。アーキテクチャーのパフォーマンスが最適化され、リソース活用が最大化されるため、開発コストを削減できます。インテル® CoFluent™ Studio を利用することで、設計サイクルの初期段階でシステム・アーキテクチャーを分析できます。これにより、設計のやり直しを最小限に抑え、市場投入を加速できます。

2004 年以降、CoFluent ソリューションは、システム・オン・チップ (SoC) 市場やコンシューマー向け電子機器市場で広く採用されています。インテル® CoFluent™ Studio の最新リリースでは、エンドツーエンドの IoT システムをシミュレーションし、ビッグデータ・クラスターの最適なディメンションを決定することができます。

インテル® CoFluent™ Studio は、あらゆる電子システムの挙動、タイミング要求、アーキテクチャー、パフォーマンス評価のモデリングとシミュレーションに使用できます。これには、スループット、レイテンシー、負荷、メモリー、コストに関するパフォーマンス評価も含まれます。例えば、インテル® CoFluent™ Studio は、IoT やハードウェア (HW)、知的財産 (IP)、組込みソフトウェア (SW) アプリケーション、HW / SW 混合マルチプロセッサー・システムといった各種システムのモデリングとシミュレーションを行うことができます。生成された CoFluent モデルは、挙動の検証、実行可能な仕様、パフォーマンス分析、機能的アーキテクチャーなどに利用できます。

CoFluent 内の挙動は、直感的なグラフィカル表示や C / C++ コードで記述されます。CoFluent により、アルゴリズムを定義していなくても、単独実行時間に抽象化できます。インテル® CoFluent™ Studio では、各コンポーネント / IP コアのモデルを通じて、ソフトウェア・アプリケーション・コードやファームウェア、プラットフォームの正確な記述なしに、挙動やパフォーマンスを評価できます。

モデリングのフロー
組込みシステムやチップを開発する上で、優れた仕様が重要であることは間違いありません。ただし、システムの仕様が定まったとしても、選択した設計が、機能要件をはじめとするシステムの各種要件を満たすかどうかは別の問題です。したがって、単にドキュメントや図表を用意するのではなく、モデルを構築する方が優れたソリューションと言えます。つまり、モデルを構築、実行し、検査や検証を行うことのできるソリューションが理想的です。

インテル® CoFluent™ Studio を利用すれば、シンプルなグラフィカル・モデルを通じて、設計意図やシステム・ユースケースを把握できます。このモデルでは、システムやユースケースの挙動は、特定の論理的目標を達成するためにアクションとインタラクションを行う並行プロセスのネットワークとして表現されます。プロセス間のデータフローと制御フロー、ならびに各プロセスのフローは、グラフィカルな表現で個別に記述されます。また、C / C++ / SystemC がアクション言語として使用されます。

インテル® CoFluent™ Studio では、2 種類のモデリングを行うことができます。

  • 挙動モデリング:   これは統計モデリングやトークンベース・モデリングとも呼ばれます (図 1 参照)。挙動モデリングでは、データタイプやアルゴリズムを定義していなくても、データの通信や演算が単独実行時間に抽象化されます。これは、プロセスの並列実行や、プロセス間の通信、同期を時系列に沿って検証する際に役立ちます。
  • 機能モデリング: 機能モデリングでは、データタイプやアルゴリズムは、システムが実行する実際のデータ定義と処理に対応します。データタイプやアルゴリズムは、C / C++ / SystemC で定義されるか、MATLAB* で記述されます。

また、モデルの実行時間は、キャリブレーション・データからバックアノテートできます。実行時間は、C / C++ コードのホストベース・プロファイリングによって測定するか、特定の変動範囲内で調査できます。インテル® CoFluent™ Studio により、時間と労力をかけずに、モデルを記述してシミュレーション結果を手に入れることができます。

システムのユースケースを把握することで得られる SystemC テストケースは、他の SystemC ベースのシミュレーション環境や検証環境で再利用できます。これにより、具体的なモデルや詳細なモデル、最終実装を検証することができます。手動コーディングと比較した場合、インテル® CoFluent™ Studio のグラフィカル抽象化と自動コード生成は、生産性を大幅に高めます。その結果、複雑で現実的なテストケースを構築できます。

インテル® CoFluent™ Studio は、Eclipse* をベースとする電子システムレベルの統合モデリング / シミュレーション環境です。CoFluent は、グラフィカル・モデラーとシミュレーション・フレームワークで構成されています。

  • グラフィカル・モデラー: CoFluent ドメイン固有言語 (DSL) を使用して、システムの挙動 (フロントエンド) を把握します。SystemC、C、C++ をアクション言語として使用して、データタイプやアルゴリズムを把握します。モデル属性を通じて、機能以外のシステム要件やモデル・キャリブレーション・データ (実行期間やメモリー値など) が追加されます。
  • シミュレーション・フレームワーク: システム全体を対象としてトランザクション・レベルの SystemC モデルを自動的に生成、インストルメントし、多様な分析ツールセットでシミュレーション・トレースを解釈します。
    • テキスト印刷コンソール
    • プロットチャート:  時系列に沿った変化や他の変数による変化を示します。
    • イメージ表示
    • アルゴリズム・プロファイリング:  アルゴリズムの実行時間を測定して、時間を調整し、実行数をカウントします。アルゴリズムの実行時間は、最短時間や最長時間、平均時間によって特定できます。
    • タイムライン:  プロセスの並列実行、その状態 (実行中、ブロック中、アイドル中)、プロセス間通信を時系列に沿って表示します。これは、タイミングを記した UML シーケンス図に相当します。プロセス間通信には、データの読み出し / 書き込み、イベントの get / set などが含まれます。
    • パフォーマンス・プロファイリング:  システム全体や各コンポーネントを対象にして、リソースロード (パーセント表記または MCycles/s)、電力消費、メモリー・フットプリント、コスト価値 (最小、最大、平均、時系列動的プロファイル) が取得されます。

CoFluent は、レイテンシーやスループット、バッファーレベル、リソースロード、メモリー・フットプリント、コストなどのパフォーマンス数値を抽出することもできます。

  • SystemC ライブラリー: Accellera の SystemC 2* ライブラリーや TLM ライブラリーを拡張します。このライブラリーは、インテル® CoFluent™ Studio の中核を成す演算 / 通信シミュレーション・エンジンです。マルチプロセッサーやマルチコア / マルチスレッド・タスクを対象とする演算が実行されます。通信には、メッセージキュー、イベント、相互接続などが含まれます。

一体型のシステム・アプリケーション・モデリング環境により、以下の処理が可能になります。

  • 構造、制御フロー、データフロー、時間属性をモデリングできます。すべてを同一モデル内に組み込むことができます。
  • ユースケースや全体的なシステム機能を記述できます。
  • C / C++ / SystemC をベースとする外部コード / IP を容易に統合できます。
  • モデルをライブラリーにエクスポートして、他のプロジェクトで再利用できるようにインポートモードを制御できます (ブラックボックスまたはホワイトボックス)。

以下により、挙動やタイミングの制約が徹底的に検証されます。

  • 完全時系列モデル: アルゴリズムや通信の期間
  • トランザクション・レベル・モデリング (TLM) SystemC をベースとする高速シミュレーション (メッセージパッシング)
  • 多様な動的ビジュアル化 / 分析ツールによる自動インストルメント

以下の要素により、今後のアーキテクチャーの設計や実装に備えることができます。

  • システム・アーキテクチャーの開発やプロジェクト初期段階におけるパフォーマンス分析の際に直接利用できる時系列挙動モデル
  • ソフトウェア (リアルタイム・オペレーティング・システム抽象化) やハードウェアの実装モデルと互換性のある機能アーキテクチャー
  • SystemC に準拠した仮想プラットフォームで再利用できる SystemC コードの自動生成
  • ドキュメントの自動生成
  • 独自のコード・ジェネレーターや検証ルール、トレース・アナライザーを作成できるソフトウェア開発キット (SDK)

また、以下の要素により、プロジェクト関係者の連携を促進することができます。

  • 並行通信機能 (またはプロセス) をベースとする汎用モデル: 技術的考慮事項や物理学から切り離されたシステム・ダイナミクスを示します。
  • 曖昧さのない実行可能な仕様: 検証時に大きな意味を持ちます。
  • 直感的に概要を示すグラフィカル表示やシミュレーション結果: プロジェクト関係者の理解を促進します。

リーダー
インテル® CoFluent™ リーダーは、インテル® CoFluent™ Studio を使用して作成されたモデルで使用できる、無料のビューアー / シミュレーター / プレーヤーです。インテル® CoFluent™ リーダーを利用すると、モデルや挙動、シミュレーション結果、測定データなどを、インテル® CoFluent™ Studio へのアクセス権を持たないプロジェクト関係者 (エンジニアやマネージャー、エンドユーザー、顧客、マーケティング担当者など) と共有できます。インテル® CoFluent™ リーダーにより、モデルやシミュレーションの表示、理解、共有をシンプルに行うことができます。

まとめ
インテル® CoFluent™ Studio とインテル® CoFluent™ リーダーは、時系列に沿って実行可能な仕様を策定することで、コミュニケーションを促進し、プロジェクトの初期段階におけるトレードオフ分析の基盤を提供します。これにより、仕様と実装の間に生じるプロジェクトのギャップを埋めることができます。

システム・モデリング / シミュレーション・ソリューション