デバイス別割り込み通知速度 (デジタル)

2021年12月27日

パソコン計測制御 PC-HELPERシリーズのデジタル入出力製品から各種バスを採用したデバイスより代表的な製品を選定し当社Windows及び、Linux用ドライバが提供する「割り込み通知機能」を使用した割り込み通知に要する時間を計測したデータとなります。なお、測定結果は当社が用意した環境で実測した数値であり、組み合わせるハードウェアやソフトウェア構成により平均実行時間が変わってきます。
評価機貸し出しサービスをご用意しておりますので、ご購入前に組み合わせる環境においてご確認いただくことをおすすめいたします。

測定条件

割り込みを発生させるためには、デジタル入力信号を変化させる必要があります。測定対象デバイスの出力論理ビット0に対応するデジタル出力端子と割り込みを発生させる入力論理ビット0に対応するデジタル入力端子を接続しています。

  • デジタル出力が存在しないデバイスの場合は、同シリーズのデジタル出力を使用します。
  • 電源を内蔵していない絶縁タイプのデバイスは、別途電力供給が必要となります。

測定方法

デジタル入力機能の割り込み通知機能を使用すると入力信号が0から1(立ち上がり)または、1から0(立ち下がり)に変化したときのいずれかで割り込みを発生させ、アプリケーションで通知を受け取ることができます。立ち上がりによる割り込み通知を設定し、割り込み通知を発生させるために必要となるデジタル入力を変化させるためのデジタル出力の操作とアプリケーションにて通知受けるまでの処理時間を計測します。
この際の処理時間は、OSのタスクスケジューリングにより変動するため10000回実行し1回あたりの平均値を算出しています。
なお、絶縁タイプのデバイスでは、デバイスの応答速度がソフトウェアの実行時間よりも遅いため、確実に出力信号が変化するまで遅延させる必要があり、200µsecのウェイトを追加しています。そのため、1回あたりの平均実行時間にもこの時間が含まれます。

  

処理フロー

フローチャート

通知受信方法

 

割り込み通知の受信方法には2種類あり、Windowsではウィンドウメッセージとコールバック、Linuxではコールバックのデータを取得しています。

ウインドウメッセージ ドライバからアプリケーションの指定されたウィンドウに対してメッセージを送る。
※Windowsでウィンドウが存在するアプリケーションのみ使用可能。
コールバック ドライバからアプリケーションの指定された関数を呼び出す
※指定できる関数の形式は決まっています。

計測結果について

 

割り込み通知は、ウィンドウメッセージよりもコールバックを使用したほうが早く処理できる可能性があります。
異なるバスの製品だけではなく、同一バス製品でもシリーズにより傾向が異なります。平均実行時間は、デバイスが採用しているバスや製品のシリーズによって異なりますので製品選択の目安としてご活用ください。
高速なCPUを採用したPCがすべてバスにおいて高速とは限りません。高スペックのCPU搭載のPCへの変更ではなくても異なる別の機器へPCを変更することでパフォーマンスが向上する可能性があります。
デジタル入出力を変化させるために使用している関数の実行時間については、デバイス別入出力応答パフォーマンス計測をご覧ください。

測定結果

測定環境 ①

    
PC CPU AMD Ryzen Threadripper 3960X 24-Core Processor 3.79GHz
RAM 64GB
OS Windows Windows10 21H1 64bit
Linux Ubuntu 20.04.2 LTS 5.8.0-43-generic (x86_64)
ドライバ Windows API-DIO(WDM) Ver.9.20
Linux API-DIO(LNX) Ver.7.71
計測ソフト開発言語 Windows Microsoft Visual C++(MFC)
Linux gcc

測定環境 ②

    
PC CPU Intel Core i5-8500 (3.00GHz)
RAM 16GB
OS Windows Windows10 21H1 64bit
Linux Ubuntu 20.04.2 LTS 5.8.0-43-generic (x86_64)
ドライバ Windows API-DIO(WDM) Ver.9.20
Linux API-DIO(LNX) Ver.7.80
計測ソフト開発言語 Windows Microsoft Visual C++(MFC)
Linux gcc

Windows

                                                                                                                                                    
バス デバイス タイプ 測定環境 ウインドウメッセージコールバック
USB DIO-1616LN-USB 絶縁3.0[msec]2.0[msec]
1.3[msec]1.0[msec]
DIO-1616LX-USB 絶縁8.3[msec]4.3[msec]
7.6[msec]4.0[msec]
CC-USB271-CPSN4 + CPSN-DI-08L 絶縁15.6 [msec]15.6 [msec]
15.6 [msec]15.6 [msec]
PCI Experss DIO-1616L-PE 絶縁231.9[µsec]224.1[µsec]
338.7[µsec]315.3[µsec]
DIO-3232T-PE 非絶縁28.2[µsec]19.0[µsec]
62.9[µsec]39.1[µsec]

Linux

                                                                                                          
バス デバイス タイプ 測定環境 コールバック
USB DIO-1616LN-USB 絶縁3.0[msec]
2.0[msec]
DIO-1616LX-USB 絶縁5.0[msec]
4.7[msec]
PCI Experss DIO-1616L-PE 絶縁274.8[µsec]
617.6[µsec]
DIO-3232T-PE 非絶縁14.2[µsec]
218.6[µsec]