パイプライン処理によって、マルチ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に手動で割り当て、実行制御を高めることもできます。

ヒント Real-Time Trace Viewerを使用して、CPUの使用効率を判断することができます。

マルチCPUのRTシステムを最適化するためのその他の関連リソース

マルチCPUのRTシステムでパフォーマンスを最適化させるための詳細については、ni.com/infoに「RTSMP」と入力し、「NIのソフトウェア製品」を参照してください。