何故SiTCPを開発したのか

SiTCPはField Programmable Gate Arrays(FPGA)をイーサネットに接続する技術です。中規模クラスのFPGA内にユーザー回路と共に実装できる回路規模でユーザデータをTransmission Control Protocol (TCP)を用いてイーサネットの転送上限値で転送する事ができます。
SiTCPは高エネルギー物理実験に代表される多チャンネル、高速データ集システムの為に開発しました。近年、高エネルギー物理実験では実験の精密化により検出器数および各検出器のデータ量が増大しています。これらの膨大なデータをどの様に収集するかが実験システムを構築する上で一つの問題になっています。転送能力性能だけでなく開発コストや製造コストなどを十分に考慮して開発を進めなければいけません。
私達のグループではインターネットの発展、普及により一般的に広まったイーサネットとインターネット技術の中心プロトコルであるTCPを使用してデータ収集システムを構築する事を目指しています。 インターネットの普及により一般的な製品の多くはTCP/Ethernetで通信する事ができます。ところが検出器のデータ処理を行う装置にTCP/Ethernet通信を行わせる事は困難でした。理由は装置の数が膨大になる為に次のような強い制限が課せられるからです。

これらの問題を解決する為に1チップ(FPGA)上にネットワーク処理回路を実装しました。

特徴

ハードウエアで処理

TCPに代表されるネットワーク・プロトコルは通常はソフトウエアで処理します。ソフトウエアでネットワーク・プロトコルを高速に処理しようとすると非常に高速で動作するCPUが必要になりますので装置を小さく省電力化する事は困難です。ソフトウエアで処理する場合、プログラムの命令に従い順番に処理するので多くの無駄時間(データ転送以外に使用する時間)が必要です。ネットワーク・プロトコルを処理する場合にはデータの最初から最後まで見なければいけない処理が何度か発生します、典型的な処理はチェックサム計算です。この様な逐次処理が終了した後で始めてユーザー・データが送信されます。受信時も同様です。ですから、無駄時間を見かけ上なくすためにはネットワーク転送速度と比較して非常に高速で動作するCPUが必要になります。高速で動作するCPUをFPGA内に実装する事は困難です。可能であったとしても、汎用OSを採用する限りプログラムを格納する為の外付け大容量RAMやハードディスクが必要です。
この問題を解決する為に全てのネットワーク処理をハードウエアで処理する事にしました。ハードウエアで処理すると様々な処理を並列に行う事ができるので実現できる高速に処理できるようになります。100Mbps用SiTCPのシステムクロックは20MHz程度あれば十分です。100Mbpsイーサネット処理を20MHz動作のCPUで処理する事が難しい事から分かるようにハードウエアでのパラレル処理は高速化に有効性です。

高速TCPデータ転送

ハードウエアで並列処理を行っている為に送受信同時に高速で安定したデータ転送をTCPを用いて行う事ができます。SiTCPのデータを受信する装置の性能にも依存しますが、最近のPC/Linux OSならイーサネットの上限値で安定にデータを転送する事が可能です。

小さな回路規模

現在Xilinx社のFPGAに実装を行っていますが、使用リソース数は約3000 Slice(全機能実装時)です。FPGAを選べばユーザー回路と共に一つのFPGAに実装する事ができます。

外付け部品が少ない

外付け部品はEthernet PHYチップとMACアドレス格納用EEPROMのみです。SiTCPはEthernet通信インタフェースに標準MII/GMIIを採用していますので様々なPHYデバイスと接続する事が可能です。最近のFPGAは光I/Fを接続できるようにSERDES(Serializer/De-serializer)を搭載している物がありますので、その様なFPGAを使用すれば光GbEを外付け部品無しで(正確にはOE/EO変換のみ)で使用可能になります。ソフトウエア処理ではない為、プログラム格納用の外付け大容量RAMなどは不要です。

UDPを用いたスローコントロール機能

実験装置の諸制御(レジスタの読み書きなど)が必要とされます。この用途のためにスローコントロール機能があります。実験装置のレジスタ設定やFPGA内部メモリなどへアクセスなどをする事ができます。


my home bottom