パイプラインでマルチCPUリアルタイムアプリケーションを最適化する
- 更新日2025-02-20
- 3分で読める
パイプライン処理によって、マルチCPUシステム (マルチコア、マルチプロセッサ、SMPシステム) で実行されるリアルタイムアプリケーションの連続処理のスループットを増大させることができます。
Whileループを使用したパイプライン処理
パイプライン処理の合理的な実装には、Whileループを使用してシフトレジスタからデータを渡す方法が最適です。
タイミングループを使用したパイプライン処理
優先度の設定やCPUの手動割り当てを行う場合は、タイミングループを使用します。各タイミングループは1つのスレッドとして処理されるため、パイプラインの実装にタイミングループのシフトレジスタを使用することはできません。タイミングループによってパイプラインを実装するには、各パイプラインステージを1つずつ並列するタイミングループに配置し、キュー、ローカル変数、グローバル変数、RT FIFOを使用してタイミングループ間でデータを渡す必要があります。以下のブロックダイアグラムは、RT FIFOによるパイプラインの実装を示しています。
データの転送方法を選択する
パイプラインのデータフローは、データの転送方法によって異なります。データ転送方法は、アプリケーションで各パイプラインの入力がパイプラインの出力に1対1で対応する必要があるかどうかに応じて選択します。
- RT FIFO―パイプライン入力がパイプラインの出力に1対1で対応するようにするには、各データ要素を待機する方法を選択する必要があります。さきほどの例では、RT FIFOを作成し、「RT FIFO読み取り」関数のタイムアウト (ms) 入力の設定によって、サブVI Aからのデータが得られるまでサブVI Bが実行されないように構成されています。
- ローカル変数またはグローバル変数―アプリケーションでパイプライン入力がパイプラインの出力に1対1で対応する必要がない場合は、ローカル変数、グローバル変数、タイムアウトが0に設定された単一要素RT FIFOによってデータを転送できます。
各データ転送方法の長所と短所については、「確定的アプリケーションでデータを共有する」の各トピックを参照してください。
自動負荷調整
タイミングループを使用してパイプラインを実装すると、CPUスケジューラの自動負荷調整によって実行スレッドがマルチCPUに分配されます。また、タイミングループの割り当てられたCPU入力を使用して、各タイミングループを特定のCPUに手動で割り当て、実行制御を高めることもできます。
マルチCPUのRTシステムを最適化するためのその他の関連リソース
マルチCPUのRTシステムでパフォーマンスを最適化させるための詳細については、ni.com/infoに「RTSMP」と入力し、「NIのソフトウェア製品」を参照してください。