PS のパフォーマンスの向上 - 2023.2 日本語

Versal アダプティブ SoC システム統合および検証設計手法ガイド (UG1388)

Document ID
UG1388
Release Date
2023-11-15
Version
2023.2 日本語

Versal デバイス プロセッシング システム (PS) では、低レイテンシ データパスおよび高スループット データパスのインターコネクト トラフィック タイプを使用して、サービス品質 (QoS) を制御できます。詳細は、 『Versal アダプティブ SoC テクニカル リファレンス マニュアル』 (AM011)このセクションを参照してください。

次の図に、PS アーキテクチャに影響する競合が発生する可能性のある場所を示します。

図 1. PS アーキテクチャの競合ポイント

プロセッシング システムとメモリ サブシステムのパフォーマンスについて考慮する際、プロセッサのパフォーマンス、クロック周波数、メモリ階層、キャッシュ、および一般的な内部および外部メモリ機能について最初に考えるでしょう。これらは重要な考慮事項ですが、プロセッシング システムのアーキテクチャについて理解することも重要です。

外部共有 DDR メモリ サブシステムとオンチップ OCM が、Versal デバイスに含まれる主なメモリ サブシステムです。メモリ サブシステムにアクセスするマスターは、PL または PS のどちらにもあります。PL マスターが PS を通過して OCM または外部 DDR メモリにアクセスする場合、PS マスターのパフォーマンスに大きく影響する可能性があります。

PL マスター トラフィックの配線は、次のとおりです。

  • NoC NMU を介して NoC に接続される PL マスター (ソフト IP)
  • PS AXI インターフェイスに接続される PL マスター
  • PS ACP に接続される PL マスター

AI エンジンおよび CPM では、トラフィックを PS インターコネクトを介して配線する必要があり、トラフィックが複数の方法で配線される可能性があることに注意する必要があります。

内部 PS マスター (APU、RPU、DMA など) はトラフィックを生成し、NoC に接続される PS インターコネクトを利用します。

  • PL から PS への直接インターフェイス (S_AXI_FPD、S_ACE_LITE_FPD、S_AXI_LPD)
    • S_AXI_FPD (FPD 内) は仮想化されており、コヒーレンシはありません。
    • S_ACE_LITE_FPD (FPD 内) は仮想化されており、コヒーレンシがあります。
    • S_AXI_LPD (LPD 内) は、物理として設定するか、仮想化およびコヒーレンシありに設定できます。
  • NoC から PS へのインターフェイス (NoC_FPD_AXI0、NoC_FPD_AXI_1、NoC_FPD_CCI_0、NoC_FPD_CCI_1、すべて FPD 内)
    • NoC_FPD_AXI0 および NoC_FPD_AXI1 は仮想化されており、コヒーレンシはありません。
    • NoC_FPD_CCI_0 および NoC_FPD_CCI_1 は仮想化されており、コヒーレンシがあります。

マスターが外部 DDR メモリまたは OCM に到達する複数の方法を理解して活用することは、配線を最適化し、PS インターコネクトの密集を回避するために重要です。

たとえば、CCI を介して複数のマスターのトラフィックを配線するよう選択すると、最大 4 つの CCI500 AXI4 マスター ポートが 4 つの NoC NMU に接続されるため、パフォーマンスに悪影響を及ぼす可能性があります。次の図では、これらを M2、M3、M4、および M5 で示します。

図 2. NoC NMU に接続されるマスター ポート

SMMU および CCI もパフォーマンスに影響します。これらはそれぞれ内部リソースを共有しているため、レイテンシが増加し、スループットが低下する可能性があります。高パフォーマンスを得るために最適化する際に仮想化/アイソレーションおよびコヒーレンシが不要な場合は、CCI500 および SMMU を使用することはお勧めしません。

トラフィック制御メカニズムは、ソース (NoC スイッチの NMU) およびデスティネーション スレーブ (MC) で使用できます。これらのメカニズムは、必要な QoS スキームを適用するために使用できます。

PS インターコネクトでは仮想チャネルはサポートされないので、物理的な分離を使用する必要があります。

イングレス方向 (外部マスターから PS スレーブ) では、各 NSU が 1 つのトラフィック クラスをサポートするので、異なる物理ポートから異なるクラスが PS に入力される必要があります。同様に、エグレス方向では、内部 PS インターコネクト ネットワークは、異なる物理チャネルを介して異なるトラフィック クラスを水平方向 NoC に接続される NMU に転送します。たとえば、4 つの CCI から NoC へのチャネルのうち 2 つは LL を転送でき (上の図の M2 と M3)、残りの 2 つは BE を転送できます (上の図の M4 と M5)。

エネルギー消費を許容可能なレベルに維持しながら、高まり続けるパフォーマンスのニーズに対応するのは困難です。Versal デバイスのような複雑なデバイスは、ワットあたりのパフォーマンスを最適化するように微調整できます。

現代のアプリケーションのパフォーマンス要件を満たすには、次を実行します。

  • 業界標準のベンチマークを使用して、PS を No'C-DDR と共にベンチマークします。
  • 汎用ツールを使用してパフォーマンス解析を実行しながら、独自のアルゴリズムを実行します。

PS のパフォーマンスは、アプリケーションの実行中にパフォーマンス データを収集するリアルタイムの非侵入型測定に基づいて調整できます。収集された統計に基づいて、周波数スケーリングやタスク スケジューリングなどの手法を使用して、パフォーマンスを低下させずに消費電力を削減するようシステムを調整します。

APU、RPU、および NoC で使用可能なパフォーマンス モニター ユニットは、CPU 使用率、キャッシュ ミス、分岐予測ミス、コード実行のホット スポットの検索などを理解するための重要なデータを提供します。

ユーザーの操作とデザインでは、APU で最大 6 つのパフォーマンス カウンターを設定して RPU で 6 つのカウンターを設定し、必要なイベントを読み出して、実行時にプロセッサのパフォーマンス情報を取得する目的のイベントを読み取ります。各プロセッサの PMU には、6 つのパフォーマンス カウンターに加え、専用のサイクル カウンターもあります。

APU では、AMD Linux ツールチェーンである PetaLinux を使用して、Perf アプリケーションを介して PMU カウンターにアクセスし、プロファイリングおよびトレース ツールを提供する Linux イメージを作成できます。

RPU では、スタンドアロン アプリケーションをインプリメントして PMU カウンターをイネーブルにできます。RPU スタンドアロン BSP でのサポートも予定されています。

最後に、AMD ChipScePy は、JTAG を介してレジスタ (パフォーマンス カウンターなど) にアクセスするための Python API と、NoC のパフォーマンスを示すアプリケーション例を提供します。