データ転送メカニズム
- 更新日2025-12-03
- 3分で読める
PCIバスにおける主なデータ転送方法には、ダイレクトメモリアクセス (DMA)、割り込み要求 (IRQ)、プログラムI/O、USBバルクの4つがあります。
ダイレクトメモリアクセス (DMA)
DMAは、CPUを介さずにデバイスとコンピュータメモリの間でデータを転送するメカニズムです。DMAは、データ転送メカニズムの中で最も高速です。高速なスループットの実現とシステム稼働率の向上のため、NIはDMAハードウェアおよびソフトウェアの技術を使用しています。DMAは、サポートされるDAQデバイスのデフォルトのデータ転送方法です。
割り込み要求 (IRQ)
IRQは、CPUを利用してデータ転送要求に対応します。デバイスはデータ転送の準備が完了するとCPUに通知します。データの転送速度は、CPUが割り込み要求を実行できるレートに緊密に関係しています。したがって、CPUの割り込み要求への対応速度よりも速い速度でデータ集録割り込み要求をすると、システムがフリーズする可能性があります。
プログラムI/O
プログラムI/Oは、バッファなしでコンピュータからデバイスに直接読み取り/書き込みを行うデータ転送メカニズムです。ソフトウェアタイミング (オンデマンド) 操作では、通常プログラムI/Oが使用されます。
USBバルク
USBバルクデータ転送は、バッファを使用したメッセージベースのストリーミングメカニズムです。USBバルクは、高速で、USBデバイスにおけるデフォルトのデータ転送メカニズムです。
メモリマッピング
メモリマッピングは、プログラムから直接デバイスへ読み取り/書き込み操作を行う技術で、読み取りと書き込みに際してカーネルレベルのソフトウェアに依存することで発生するオーバーヘッドを回避できます。カーネルの使用は、安定性に優れていますが、速度が低下します。メモリマッピングは、操作が成功するには、メモリの4KBページ全体がプログラムに開放される必要性があるため、安全性に劣りますが、速度は向上します。メモリマッピングは、これをサポートするデバイスにおいてはデフォルト設定です。
データ転送メカニズムをDMAとIRQの間で切り替える
各デバイスには、限られた数のDMAチャンネルがあります (正確な数については、デバイスのドキュメントを参照してください)。DMAチャンネルを必要とする各操作 (AI、AOなど) では、使用可能なDMAチャンネルがある限りは、DMAメカニズムが使用されます。使用できるDMAチャンネルがなくなると、DMAチャンネルを要求する別の操作を実行しようとしたときにエラーが発生します。これらの操作は、適宜割り込み要求メカニズムを使用するように変更できます。NI-DAQmxでこの変更を行うには、データ転送メカニズムチャンネル属性/プロパティを使用します。