今回の「探求-次世代Dynamic Tracer」では、前回ご紹介しましたFPGAボードを使ってある実験を行った様子をご紹介したいと思います。今回の実験は、Dynamic Tracerのスペックをどこまで引き上げられかを占う実験でもありますが、今回の結果からおぼろげながら次世代Dynamic Tracerのターゲットスペックが見えてきました。果たしてその結果は如何に。
USB2.0の壁
現行のDynamic Tracerでは、USBコントローラとしてCypressのFX2を使用しています(図1)。FX2ということで、当然ながらUSB2.0です。USB2.0の理論上の最高速度は480Mbpsになっていますが、FX2の実効値としての速度はバイト換算で20~40MByte/secとなっています。幅があるのはこの実効値はPC側のUSBのコントローラにかなり依存するためです。現に、手元のPCで計測すると速い方で34MByte/sec、遅いものだと22MByte/sec程となっていました。
図1: Dynamic Tracer基板イメージ
Dynamic Tracerの設計上、前段(FPGA-DSP間)の転送能力は100Mbyte/sec程で抑えていますが、これでも後段のFX2の実効値である20~40MByte/secを超えていますので、単純に転送するだけでは溢れてしまいます。このため、Dynamic Tracerでは相当量のバッファを積んで緩和しています。しなしながら、どんなにバッファサイズが大きくても、数字上いつかは溢れてしまいます。ここにUSB2.0の壁がありました。
まずはUSB3.0の実力を確認
遅ればせながら、FX3の実力を試してみたいと思います。図2にあるAX-Card7ボードを使用して、FX3の転送速度を計測してみました。結果、手元のPC環境では、290MByte/sec程となっていました。このボードのメーカーさんのサイトでは平均して350MByte/secと謳われていますので、300MByte/sec越えを目指せるかもしれません。
図2: Prime System社 AX-Card7
この結果から、FX3はFX2の約10倍の転送能力があることが分かります。USB3.0の転送速度の理論値が5Gbpsとなっており、USB2.0の理論値である480Mbpsの約10倍であることを考えれば、当然と言えば当然の結果かもしれません。
次世代Dynamic Tracerの原理試作
速度という意味では、現行のDynamic TracerのFX2をFX3に置き換えれば済む話ではありますが、いろいろダウンサイジングは考えたいところです。そこで、実験的にAX-Card7を使って手作りのDynamic Tracerを作ってみました。言ってみれば、次世代Dynamic Tracerの原理試作機です。もともと、AX-Card7には拡張用の基板が別売で提供されているので、この拡張基板に信号入力用のプローブを接続した子基板をつけて原理試作機を作ってみました(図3)。
図3: 原理試作機の基板
DT10アプリと原理試作機でデータ取得
ほぼこのFPGAボードだけで次世代Dynamic Tracerは完結してしまう感じもありますが、この原理試作機をDT10アプリから動かしてみました。DT10アプリはこの試作機を動作させるために下回りには手を加えています。図4は今回DT10アプリでデータ取得を行ったデモボードと原理試作器の接続図です。
図4: 原理試作機とデモボード
デモボードということで、USB2.0でもお釣りが来るぐらいのデータ量でしたが、とりあえず正常にデータが取れていたのでデータの流れは問題ないと思われます。図5はそのときにDT10で取得したログデータのイメージです(と言いましても、何ら実際の製品で取ったログデータとは変わりはありませんが)。今回の実験はFX3での開通確認ができたところまで。
図5: 原理試作機で取ったテストレポート
今回の実験から単純にFX2をFX3に置き換えるだけで、従来の10倍速が狙えることが分かりました。後は、全体のダウンサイジングを考えつつ、前段をどこまで高速化できるかがポイントになりそうです。
最後に
デモボードと言うことでデータ量的に、今回の実験では開通確認までとなってしまいました。次世代機についてはまだまだ検討段階です。次回は前段のデータ量を一気に増やして限界レベルを追求してみたいと思います。