DMA speed of Bit3 617 using HSM 8170 on various conditions

64 kB のブロックを DMA 転送するのに要する正味の時間(※)を 色々な条件下で測定したものです。 解釈については下の説明を御覧ください。 共通する条件は、ランダムパルサーを使って、 イベント当り 57 ワード (16 ビット) のデータを FERA バスから書き込んでいる事です。


DMA 転送はユーザープロセスから起動しているので、 システムの負荷が上がると、 タスク切り替えによる DMA 起動の遅延が起ります。 Linux の場合、 最短のタスク切り替え時間 (一旦他のプロセスに主導権が移ってから自分に戻ってくるまでの時間) は 10 msec なので、 上記で問題にしている時間より非常に長いのですが、 ダブルバッファにしている為、 通常はデータ収集速度に影響を与えません。

しかし、DMA の起動が極端に遅れた結果、 DMA 転送中に HSM 8170 の (次の) バッファフルが起った場合には、 VME バスからの割り込みより DMA が優先される為、 HSM のポインタ切り替え処理が後回しとなり、 従って データ収集の停止 (BUSY VETO) 時間が増大する事になります。 これが起こるのは、 非リアルタイム OS である Linux システムを、 しかも汎用用途で使いながらデータ収集をさせる事に原因が有ります。 データ収集性能の上限を規定する一つの要因となる訳ですが、 通常の使用環境では、 DMA の遅延が頻繁に起こる以前に他の部分が律速になると (何となく)思っています。