概要
ユニバーサルシリアルバス(USB)の使用方法を最適化して高性能なデータ集録を実現するため、ナショナルインスツルメンツは、NI信号ストリーミングテクノロジを生み出しました。NI信号ストリーミングでは、3つの革新的ハードウェアレベルおよびソフトウェアレベル設計要素を組み合わせて、USBを介した連続高速/双方向データストリーミングを可能にします。この新しい技術により、USBを使用して、これまでPCIなどの内部バスでしか実現できなかった高性能アプリケーションを作成することができます。この技術資料では、USBを介した高速データ集録に関する課題、NI信号ストリーミングテクノロジがUSBデータ集録(DAQ)デバイスにとって不可欠である理由を説明します。
目次
概要
1993年にPCIバスが発表されて以来、PCIベースのデータ集録テクノロジの発展は止まるところを知らず、2006年にはナショナルインスツルメンツの製品だけで、600万個を超える新しい計測チャンネルの売上を記録しました。全世界におけるポート数は20億を超えており(usb.org)、ユニバーサルシリアルバス(USB)によってデータ集録の展望は劇的に変化しました。現在、データ集録システムの構築には、外付けで携帯するのに便利な使いやすいUSBバスが使用されることが多くなりました。USBベースのテスト/計測/制御製品が最初に導入された頃、USBデバイスとPCIの対応製品の性能には大きな開きがありました。
PCIとUSB DAQ製品の性能に差があるのは、USB DAQデバイスに高性能なコンポーネントを組み込むのが不可能だからではなく、USBの性質そのものに原因があると言えます。例えば、初期のUSBは低帯域幅で、遅延時間が長く、データ転送がホスト駆動型なため、測定条件を高頻度で高速に変更しながら、複数のチャンネルで大量のデータ集録をするという用途では使用することができませんでした。こうした理由により、初期のUSBベースの計測アプリケーションはデータストレージ、基本的なデータ集録、および計測器制御用GPIBおよびシリアルバスの代替品としての使用に限られていました。その後、USB 2.0規格として2001年に発表されたHi-Speed USBは、USBのバスレートを従来の40倍の480 Mb/秒にまで高められており、USBは優れたスループットと操作性を誇るようになりました。そのため、データ集録などのアプリケーションに適したバスとして急速に普及しました。しかし、Hi-Speed USBは本来音響やビデオなどといったデータストリーミング用に設計されているため、データ集録や制御など、設定条件を高頻度で高速に変更しながら、複数のチャンネルで大量のデータ集録をするようなアプリケーションでは、「スループットの低さ」と「応答速度の遅さ」という問題がありました。
USBの特徴に起因するUSB DAQのボトルネックを解消し、高性能なデータ集録を実現するため、ナショナルインスツルメンツは、NI信号ストリーミングテクノロジを生み出しました。NI信号ストリーミングでは、3つの革新的ハードウェアレベルおよびソフトウェアレベル設計要素を組み合わせて、USBを介した連続高速/双方向データストリーミングを可能にします。この新しい技術により、USBを使用して、これまでPCIなどの内部バスでしか実現できなかった高性能アプリケーションを作成することができます。
NI信号ストリーミングテクノロジが登場する前のデータ集録におけるUSBの問題
仮に480 Mb/秒でのデータ転送が可能な場合、USB 2.0の帯域幅は、ほとんどのデータ集録アプリケーションにとって十分です。しかし、既存のUSB DAQハードウェアおよびソフトウェアの設計では、その帯域幅をフルに活用することができません。データ集録時は、複数のカウンタ/タイマだけでなく、アナログ入力、アナログ出力、デジタル入力、およびデジタル出力といった複数のI/Oタスクが含まれる場合が多く、これらのタスク全てを同時に処理するには、データ集録デバイスは複数のデータ転送を同時に処理する必要があり、PCメモリの迅速なデータ入出力が可能である必要があります。この点では、PCIおよびPCI Expressは、データ集録設計に適しています。これらのバスは高帯域幅、低遅延、バスマスタリング、およびDMAチャンネルを提供して、PCメモリに直接データを転送するからです。USB、およびイーサネットなどの外部バスは、プラグインバスが持つ機能に欠ける点でプラグインバスに劣っています。
PCI DAQデバイスとは異なり、USB DAQデバイスは、DMAチャンネルのないホスト駆動型シリアルプロトコルによって制限されます。OSはデバイスとのデータのやり取りに任意の要求を開始する必要があります。これによって、データ転送には大量のオーバーヘッドが生じます。デバイスがバス制御、およびデータ転送を行うには、CPUとのやり取りが必要だからです。さらに、デバイスとPCメモリとの間でのデータのやり取りは、コンピュータのプロセッサによって制御されます。これによって大量の通信オーバーヘッドも生じます。
これまで、USBデータ集録デバイスの設計において、こうした制限を解消するには2つの選択肢がありました。不足を補うか、何もしないかのどちらかです。1つ目の不足を補う方法では、高額な大容量メモリをデバイスに組み込んでいました。追加メモリは、CPUがデータ取得の適切な命令を処理できるようになるまで、データのデバイス内の保存場所を提供します。この方法では、バッファのオーバーフローを一定時間軽減することはできるかもしれませんが、デバイスの遅延時間は増加します。データが結局は使用不可能な場所にある大きなスタックに保存されてしまうためです。2つ目の何もしないという方法では、たった一つの高速I/Oタスクしか処理できないデータ集録デバイスを設計することになる場合が少なくありません。例えば、USB型オシロスコープのように、データをPCに対して送信するようなデバイスのことです。たとえ、アナログ・デジタルI/Oを複数搭載するUSBデータ集録デバイスを設計しても、各機能が同時に使用できなかったり、「スループットの低さ」と「応答速度の遅さ」がボトルネックになる可能性があります。こうしたソリューションは理想的ではなく、PCIベースのデータ集録デバイスに迫る性能は得られませんでした。
NI信号ストリーミングテクノロジは、USBを介した連続双方向高速データストリーミングを可能にすることによって、こうした問題を異なる角度から解決します。NI信号ストリーミングを説明する前に、まず、USB通信とレガシーUSB DAQ設計について説明します。
USB通信の概要
シリアルプロトコルであるUSBは、アドレス、要求、確認情報などのデータをパケット単位で転送し、接続されている全てのデバイスの間で使用可能な帯域幅を共有します。USBシステムは3つの要素から構成されています。ホスト(通常はデスクトップPCまたはノートPC)、USBデバイス、USBケーブルです。USBホストは、全てのデータのUSBデバイスへの転送を開始しますが、1つのトランザクションに対して3つ以上のパケットの送信が必要になります。ホストの要求、データ転送、およびホストの確認情報です。
また、USBとの情報のやり取りはエンドポイントを経由して行われます。エンドポイントは、データがUSBデバイスとやり取りする際に必ず経由するゲートに相当します。エンドポイントは一方向にしかデータを転送しないため、デバイスには入力と出力の機能を果たす複数のエンドポイントが必要です。データがデバイスのエンドポイントとホストコントローラの間でやり取りされるとき、4つの基本的な転送方法が用いられます。1つはUSBバス制御用で、あとの3つはデータ転送用です。
- 割り込み転送では、少量データに対して、タイミングの合った信頼性の高いデータ転送を提供します。キーボードやマウスなどの周辺機器に対してよく使用されます。
- アイソクロナス転送では、データの損失の可能性を含めて事前交渉した帯域幅を提供します。オーディオ/ビデオのストリーミングなど、データの正確性よりデータ配信時間の正確性がより重要な場合によく使用されます。
- バルク転送では、大量データに対して、データ損失のないデータ転送を提供します。外部ハードドライブなど、データの損失があってはいけない大量データの転送が必要なアプリケーションによく使用されます。
内蔵エラーチェック機能および大量転送機能を兼ね備えたバルク転送は、USBデータ集録に適しています。しかし、実際、バルク転送が高速転送レートを実現できるのは、USBポートを経由して単一方向にのみデータが転送される場合です。転送の数が増えた場合(特に双方向転送)、転送レートは大幅に下がります。
従来のアプローチ
USBが高性能データ集録で期待されるスループットおよび遅延時間を満たせない原因として、3つの技術的問題があります。最初の問題は、データ管理に使用するプロセッサの効率の悪さです。データ集録のフロントエンドとUSBのエンドポイントの間のデータ管理に使用される、現在の標準プロセッサは、処理が遅い商用(COTS)プロセッサです。このプロセッサの目的は、適切な情報を各USBエンドポイントに振り分けることです。カスタム設計と比較すると、これは低コストなソリューションであり、実装も非常に簡単です。
図1.従来のUSB DAQアーキテクチャでは、DAQフロントエンドとUSBエンドポイントの接続に性能の低いプロセッサを使用
これらのプロセッサは命令ベースのシングルスレッドで、スイッチのように動作を切り替えます。常に1つの命令を実行することしかできないため、通常USB DAQデバイスの障害になります。ホストからの制御要求を処理するなどの優先度の高いタスクは、プロセッサのデータ転送の処理を遅らせる場合があります。これは低スループットの原因になったり、場合によってはバッファアンダーフローまたはバッファオーバーフローのエラーの原因になったりします。こうしたアーキテクチャのため、プロセッサは複数のデータ転送の管理と受け取った制御要求の処理を同時に行うことができず、高性能データ集録を実現できません。言い換えれば、USBは、複数のI/Oタイプのデータ転送を行うPCI DMAのような性能を実現することができないのです。
次の問題は遅延時間です。遅延時間は、データ要求開始から実際のデータ転送開始までの時間として定義されています。USBの遅延時間がPCIより長いのは、OSベースのアクセスとシリアルという性質のためです。通常のシングルポイント電圧集録には、レジスタレベルの命令が多数必要になる場合があります。各命令に1ミリ秒の遅延時間がかかるとすると、この命令を処理することは不可能になります。
結局、データのスループットと遅延時間はトレードオフの関係になります。高速なデータスループットレートを得るには、転送時ごとに大きなデータセットを転送する必要があります。そうすることによって、システムの応答性が低くなり、遅延時間が長くなるので、大きなデータの転送中はデバイスが非応答状態になります。
本当に必要とされるのは、アイソクロナス転送における時間の正確性とバルク転送におけるデータ損失を全く発生させない能力が両方備わったデータ転送方法です。このようなニーズを満たすために、ナショナルインスツルメンツは革新的なUSBデータストリーミングテクノロジである、NI信号ストリーミング(特許出願中)を開発しました。
USB DAQに対するNI信号ストリーミングアプローチ
ナショナルインスツルメンツは、NI信号ストリーミングを使用して3つの主な設計改善を行いました。USBを使用して大きなデータセットを迅速に転送できるようにし、メッセージベースの命令を最適化し、USBデバイスにインテリジェンス機能を追加して応答性を向上しました。
高速データ転送
USBを使用して大量のデータを迅速に転送するには2つの条件が必要です。まず、USBはホスト駆動型の通信プロトコルであるため、ソフトウェアドライバは迅速かつ連続的にデータ要求を送信する必要があります。デバイス側では、データをできるだけ早くUSBのエンドポイントに通信できるようにして、次々に入ってくるホストからの要求を実行する必要があります。
ホスト側では、NI-DAQmxドライバソフトウェアによって、確実にデータ要求が連続送信されます。USBホストはデバイスからのデータの受信および処理を行いながらも、要求をキューに入れ、送信する準備を整えます。
デバイス側では、NI信号ストリーミングによって、プロセッサベースのスイッチのような切り替え動作が回避されます。ここで使用されるNI信号ストリーミングコントローラはカスタムコントローラで、複数のタスクを同時に実行し、転送データを直接USBのエンドポイントにマッピングします。NI信号ストリーミングは、4つの高速DMAチャンネルを持つNI-STC 2システムタイミングコントローラと連携しており、その4つのDMAチャンネルを4つのUSBエンドポイントに直接接続しています。これにより、スイッチのような切り替え動作が不要となり、プロセッサのリソースに空きができるため、メッセージ変換のような他のタスクを処理することができます。内蔵DMA転送では、データは常にUSBエンドポイントにおいて読み取り/書き込みができる状態にあります。
図2.NI信号ストリーミングでは、NI信号ストリーミングコントローラを追加して、DAQフロントエンドからUSBエンドポイントへの内蔵DMA転送を実現する。これにより、内蔵プロセッサのオーバーヘッドを軽減できる。
メッセージベースの命令
前述のとおり、USBの遅延時間はPCIより長くなります。この遅延は、シングルポイント電圧計測に数十個のレジスタレベルコマンドの送信が必要になる場合に増加します。NI信号ストリーミングはメッセージベースの通信を提供して、時間のかかる送信を回避します。ホストは、「acquire.commit」などの高レベルメッセージを1つだけUSB経由でデータ集録デバイスに送信すればよいことになります。次にデバイスプロセッサがこのメッセージを数十個のレジスタレベルコマンドに変換します。これらのコマンドはシステムタイミングコントローラを適切にセットアップするのに必要です。

図3.メッセージベースの命令を使用して、数十個のレジスタレベルコマンドの送信を回避する。
デバイス側の通信インテリジェンス機能
NI信号ストリーミングは従来のUSB DAQが抱えていたデータのスループットと遅延時間のトレードオフの問題を解消します。高速スループットが要求される場合、大きなデータセットは連続的に転送され、転送できなかった小さなデータセットに対しては即座に転送要求が発生する仕組みになっています。従来のUSB DAQデバイスの場合、USBホストは大きなデータの転送完了を待ってから、小さなデータセットを転送していたためデータのスループットと遅延時間が悪化していました。
NI信号ストリーミングを採用したデバイスの場合、デバイスに追加されたインテリジェンス機能によって、大きなデータセットの転送中でもデータ転送を一時停止し、小さなデータセットの転送要求に対して迅速に応答します。このように、デバイス側に通信インテリジェンス機能を持たせたことにより、データのスループットと遅延時間を同時に向上させています。
USBを使用した高性能DAQ
高速データ転送およびメッセージベース命令によってデータのスループットが高速になり、デバイス側に追加されたインテリジェンス機能がメッセージベース命令と組み合わされて、遅延を低く抑えます。これにより、シングルポイント集録は、アナログ入力では最大1,600%、アナログ出力では最大250%の性能向上を実現しています。

図4.シングルポイントアナログ入力/アナログ出力の性能比較表
NI信号ストリーミングテクノロジをHi-Speed USBと統合した新しいUSB DAQ設計を採用することにより、ナショナルインスツルメンツはUSBを業界最高水準の自社製品NI MシリーズUSBデータ集録デバイス、およびNI CompactDAQデバイス用の高性能バスとして活用しています。MシリーズUSBデータ集録デバイスは、PCI対応製品の基本性能をそのまま引き継いだ製品であり、PCI製品と同等の性能で計測・制御が可能です。MシリーズUSBデータ集録デバイスにはバスパワー型と外部電源型の2種類があります。
NI CompactDAQはモジュール型を採用し、拡張性に優れた計測・制御デバイスです。各種計測・制御機能を備えたモジュールが30種類以上用意されており、そのモジュールはホットスワップ可能で信号調節を内蔵しています。そのため、拡張性に優れたデータ集録システムが構築できます。両プラットフォームには、他にも当社の業界最高水準テクノロジが採用されていて、高性能および高確度のデータ集録を実現しています。NI信号ストリーミングが採用された全てのUSB DAQデバイスには、4つのDMA同様のチャンネルが備わっており、USB経由で最大4つの高速処理を同時に転送することができます。
図5.業界最高水準のNI USBデータ集録プラットフォーム
まとめ
USBは、マウスやキーボードといったアクセサリ用の低速バスに始まり、データ量の多いアプリケーションに対応できる高速バスに発展しました。NI信号ストリーミングにエラー修正、ノイズ除去、電源管理、およびUSBプロトコル固有の配電を組み合わせると、堅牢性、安全性、および信頼性に優れたUSBバスが誕生し、計測/制御製品で活用することができます。
NI信号ストリーミングテクノロジの登場により、現在、USBデバイスは通常プラグインバスで期待されるような性能を実現しています。高速データ転送における性能の問題の解消、通信オーバーヘッドの軽減、およびデバイス応答性の向上によって、NI信号ストリーミングはUSB DAQデバイスに必要不可欠なテクノロジになりました。メガヘルツ範囲内で複数の計測タイプを転送する場合でも、数ヘルツでセンサデータを記録する場合でも、NI信号ストリーミングはUSB DAQアプリケーションに必要な性能を実現します。
Nathan Yang
Product Marketing Engineer
nathan.yang@ni.com
NI USB製品の高度な機能の詳細については、高速USB E-Kit をダウンロードしてください。
関連リンク:
NI USBデータ集録製品
NI CompactDAQ
法律関連事項
本チュートリアル(以下「チュートリアル」という)は、National Instruments(以下「NI」という)によって作成されたものです。本チュートリアルは、NIにてサポートされていますが、本チュートリアルの内容に関するテストや検査が完全に行われていない可能性があり、チュートリアルの品質について、もしくは、関連製品およびドライバの各改訂版に対するサポート継続については、何らの保証も適用されません。本チュートリアルは、いかなる保証もなく「作成された状態のまま」で提供されており、ni.com/jpの使用条件に特別に規定されている特定の制約事項に従うものとします。 (http://ni.com/legal/termsofuse/japan/ja/)



