追加情報
エラーはいつ発生しますか?
収集中の場合、NI PCIe-1429は継続的にカメラからデータを収集し、ボード上のメモリに保存します。同時に、先入れ先出し(FIFO: First-In-First-Out)方式でこのデータをコンピュータのメインメモリに送信することを許可するために、PCI Expressバスと継続的に通信します。PCI Expressバスが少なくともカメラからの流入速度と同じ速度でデータを受け取れない場合、オンボードメモリが最終的にいっぱいになり、FIFOオーバーフローエラーが発生します。
PCI Expressは十分な専用帯域幅以上があると思いますが、エラーが発生するのはなぜですか?
未加工のPCI Express帯域幅を比較すると、あらゆるフルコンフィグレーションのCameraLinkカメラに対応するのに十分な量が常にあると思われます。x 4 Gen 1 PCI Expressリンクの最大スループットは1 GB/秒(1024 MB/秒)であり、フルコンフィグレーションカメラは最大680 MB/秒を生成できます。 最大帯域幅は重要な考慮事項ですが、最大帯域幅を無期限に維持することはできません。考慮しなければならない別の要因があります。
バスのオーバーヘッド
PCI Expressバスにはさまざまな種類のオーバーヘッドが必要ですが、最大のもの(パケットヘッダ)に注目します。バスを介して送信されるパケットごとに、バス上のある時間をヘッダ情報の送信に使用する必要があります。画像データをホストメモリに送信するのに最適なタイプのパケットのために、PCI Express規格は20バイトのパケットごとのヘッダを要求します。下表に見られるように、これは小さなパケットサイズに対して達成可能なパフォーマンスを1024 MB/秒をはるかに下回るように大幅に減らすことができます。
パケットペイロードサイズ (バイト)
|
最大パケットスループット (Mbytes/秒)
|
8
|
286
|
16
|
444
|
32
|
615
|
64
|
762
|
128
|
865
|
256
|
928
|
512
|
962
|
1024
|
981
|
2048
|
990
|
4096
|
995
|
最大パケットサイズは、PCI Expressリンクを共有する2つのデバイス間で通信されます。2008年現在、ほとんどのデスクトップチップセットは最大128バイトのパケットを許可し、ほとんどのワークステーションおよびサーバーチップセットは最大256バイトのパケットを許可します。そのため、一般的なデスクトップPCの場合、この1つの側面のオーバーヘッドを考慮しただけでも、達成可能な最大スループットは865 MB/秒です。
この記事の範囲を超えている確認応答パケット、アップデートフロー制御パケットおよびアライメントパケットを含む他の種類のオーバーヘッドもあります。
バス階層
デバイスには、他のデバイスと共有されていないパートナーへの独自専用リンクがあります。各デバイスは完全に独立しているように見えますが、これは通常システムが実際に構築される方法ではありません。
ホストメモリに到達するために、PCI Expressパケットは通常、複数のPCI Expressリンクを通過します。低価格コンピュータでは、グラフィック以外のPCI Express IOスロットがチップセットのサウスブリッジに接続され、グラフィック用のx16スロットがチップセットのノースブリッジに接続されることがあります。これらのシステムでは、IOスロット内のパケットは、画像収集デバイスからサウスブリッジへ、サウスブリッジからノースブリッジへ、そしてノースブリッジからホストメモリへと進みます。他のシステムでは、もっと実質的なバス階層があるかもしれません。IOスロットは、最終的にサウスブリッジへの接続、そしてそこからノースブリッジおよびホストメモリへの接続を見つける前に、他のスイッチに接続するかもしれないスイッチに接続する可能性があります。
階層の各レベルにおいてスイッチまたはブリッジは、画像収集デバイスからのトラフィックを他の接続リンク上のデバイスからのトラフィックと組み合わせることをタスクとしています。これらのデバイスは他のIOスロットに差し込まれているか、マザーボードに組み込まれている可能性があります(たとえば、イーサネットインタフェース)。
ホストメモリに近づく接続のそれぞれのサイズが、その下にあるすべてのリンクの合計(およびスイッチングオーバーヘッドを考慮した追加の容量)と同じ大きさである場合、バス階層によるスループットの低下はありません。ただし、すべてのデバイスが常にフルレートで送信することを要求するシステムはほとんどないため、システム設計者はシステムをこのように設計することはしません。そうすることで平一般的なユーザに見合うようにコストを抑えています。その結果、階層内のステップ数とホストメモリに至るまでの接続サイズが、ハイエンドパフォーマンスに影響を与える可能性があります。通常、ワークステーションとサーバは、デスクトップコンピュータよりもホストメモリまでかなり大きい「パイプ」サイズ用に設計されています。
バスのレイテンシ
スイッチ、チップセット、メモリコントローラ間のスループットは、個々のPCI Expressリンクの全スループットの合計よりも小さいことを説明しました。すべてのIOデバイスとプロセッサが最終的に同じリソース(ホストメモリ)にアクセスする必要があるという追加の要因は、同時にホストメモリにアクセスすることを望む複数のデバイスがあることです。
その結果、デバイスがアクセスを要求してから受信するまでに時間がかかることがあります。 PCI Expressデバイスはすべて、この遅延を「待つ」ための少量のメモリを備えています。しかし、このメモリは無限ではありません。ノースブリッジはいくつかのトランザクションをキューに入れます。メモリが満杯になると、サウスブリッジに新しいデータの送信を停止するように指示します。サウスブリッジが満杯になると、スイッチに新しいデータの送信を停止するように指示し、IOスロットに接続されている最後のスイッチがIOスロット内のデバイスにデータの送信を停止するように指示します。これが起こると、画像収集デバイスは、やがて満杯になるまでそのメモリを満杯にし始めます。画像収集デバイスが満杯になると、カメラに満杯であることを知らせることはできません。新しい画像データは送られ続けますが、それを格納する場所がないため、ボードはFIFOオーバーフローエラーを返してユーザーに通知します。これは、他のデバイスがメモリ不足になったときのユーザーエクスペリエンスとは異なります。
たとえば、イーサネットデバイスの場合、ユーザはデバイスがメモリを満杯にしたことさえ気づきません。画像収集デバイスのように、イーサネットTCP/IPプロトコルは欠けているデータをチェックします。ただし、イーサネット上で欠落データが見つかった場合は、データを再送信するように要求が送信側デバイスに送信されます。通常、データが再送信されるまでには、データを保持するためのスペースがあり、アプリケーションはわずかな遅延で続行されます。ただし、CameraLinkでは、カメラにデータの再送信を要求するメカニズムはありません。
バスの電源管理
現在のコンピュータの電源管理ポリシーでは、デバイスがアイドル状態のときに推測します。誤って推測した場合、パフォーマンスの問題とFIFOのオーバーフローを引き起こす可能性があります。