ギガチャネルモジュール
APC-730に関するQ&A
『APC-730』は、ご好評頂いております『ギガチャネル』シリーズの上位機種に位置し、搭載メモリが128MB, 通信速度が4.2Gbpsと大幅な性能アップが図られています。また、『APC-730 』の大きな特徴として、高速な転送速度を生かすためインターフェイスが PCI-X に対応しています。

Q1 APC-730の仕様を教えて下さい。
Q2 どんなコンセプトの製品ですか?
Q3 何台接続可能なのですか?
Q4 各ノードのアドレスはPnPですか?
Q5 通信の為の特別なプロトコル・スタックは必要ですか?
Q6 データ通信(共有)以外の機能はありますか?
Q7 セフォマ機能とはどのような使い方をするものですか?
Q8 実際の転送速度はどのくらいですか?
Q9 接続されるノード数によって速度は変わりますか?
Q10 データの遅延時間を計算できますか?
Q11 サポートするOSは何ですか?
Q12 ITRONや他OSでも使用できますか?
Q13 その他、注意する点はありますか?
Q14 どんなアプリケーションが考えられますか?


ギガチャネルモジュール
APC-730/AGM-730に関する共通Q&A

Q15 APC-730はPCI空間にどのようにマッピングされますか?
Q16 APC-730のメモリ容量は?
Q17 他社のファイバーチャネル製品と互換はありますか?
Q18 トークン、フレームなど言葉の意味を教えて下さい。
Q19 AGM-730とAPC-730は接続可能でしょうか?
Q20 DMAで自ノード共有メモリへライトした場合、他ノードの共有メモリの更新タイミングは?
Q21 ドアベルレジスタとはどういった機能のレジスタでしょうか?
Q22 ブロックバーストモードとはどういったものですか?
Q23 ブロックバーストモードはどのように設定しますか?
Q24 一般的なデータ転送はどういったフローとなりますか?
Q25 データエラーのチェックなどありますか?エラー発生時は、再送処理など行われますか?
Q26 ループの中の1台が故障するとどうなりますか?
Q27 フレームの管理はどの様に行われていますか?
Q28 BER(ビットエラーレート)はどのくらいですか?
Q29 ノード遅延とはどういう意味ですか?
Q30 カタログに記載されている転送速度はどういった測定方法となりますか?
Q31 転送速度の理論値は算出可能でしょうか?
Q32 OSによる転送時間の差はありますか?
Q33 AGM-730同士の接続の場合は、実際にはどのようにデータ転送を行うのですか?
Q34 AGM-730にはレジスタはありますか?
Q35 AGM-730を実装するボード(システムボード)の設計で注意することはありますか?
Q36 AGM-730 Host I/FバスにあるBG#(バスグラント)はループ上のある1台が取得すると他のノードは取得できないという事でしょうか?言い換えるとループ上にAGM-730が複数台存在する場合送信可能なノードは同時刻で1台だけになりますか?
Q37 AGM-730はバッファ(FIFO)を持っていますか?
Q38 AGM-730アプリケーションノート 『2-15 2.2.7項  送信側 FIFO のオーバーフロー防止のため、Memory Host Write アクセスを行う場合、1Block ごとにバスの取得(#BR のアサート)、開放(#BR ネゲート)動作を行うことをお薦めします』とありますが詳しい説明をお願いします。
Q39 AGM-Host I/Fバスでは64ビットアクセスのみ可能でしょうか?また2Gbpsと4Gbpsではバスの動作やバス幅は変わるのでしょうか?
Q40 AGM-730を複数台接続して通信する場合、特定の2台だけで通信する事は可能ですか?
Q41 AGM-730を評価する機材はありますか?
Q42 APC-730はDualCPUに対応していますか?




Q1 APC-730の仕様を教えて下さい。
主な違いは以下の通りです。

機種 形状 対応バス 標準メモリ容量(最大)
APC-730 PCIカード

PCI = 3.3V 66MHz 64Bit
PCIX = 3.3V 133MHz 64Bit

128MB
TOPへ
Q2 どんなコンセプトの製品ですか?
複数のボードを光ケーブルで接続し、通信する為のボードです。ソフトウェアから見れば、 PCI バス上に共有メモリが128MBytee がアサインされているように見えます。その共有メモリを介してお互いが通信します。全ノードでデータを共有出来ますので、処理の分散化/共有化等に威力を発揮します。
TOPへ
Q3 何台接続可能なのですか?
128台まで接続可能です。接続形態はループ・トポロジーとなります。またノード間の最大距離は125mです。(マルチモードのケーブル使用時は300m)
TOPへ
Q4 各ノードのアドレスはPnPですか?
いいえ。各ノードはジャンパスイッチで自己のIDを固定指定します。同一ループ内に同じIDを指定することは出来ません。またマスタ・ノードが1つ存在する必要があります。マスタ・ノードはループ上を流れるパケットの管理ノードで、マスタ・ノードもジャンパで固定指定します。
TOPへ
Q5 通信の為の特別なプロトコル・スタックは必要ですか?
いいえ。プロトコルは全てH/Wで行いますのでS/Wで制御を行う必要はありません。 S/W は共有メモリをR/Wするだけで通信が可能です。データを他ノードに送信する場合は共有メモリに書き込むだけで、接続されている全ノードはそのデータを参照する事が可能です。
TOPへ
Q6 データ通信(共有)以外の機能はありますか?
ID=0〜31のノードでは任意のノードに対して割り込みを発生させる事が可能です。従ってデータの準備が出来た時点や変更を行った時点で一斉通知や個別通知が可能になります。また、エラーが発生した時点での割り込み通知や、共有メモリの排他同期をとるセマフォ機能があります。
TOPへ
Q7 セマフォ機能とはどのような使い方をするものですか?
共有メモリの「あるエリア」を複数のノードで同時に更新/参照するようなアプリケーションを作成する場合に、他ノードとの同期を簡単に行う為のH/W機能です。
例えばアプリケーションでセマフォに対応するエリアを決めておき、そこに対するアクセスを「セマフォ取得」→(参照や更新)→「セマフォ開放」の手順で行います。これにより全ノード間での排他アクセスが簡単に実現出来ます。セマフォは8個用意されていますのでシステム全体で独立した8箇所の排他領域を持つ事が可能です。
この機能は共有メモリのアクセスをH/W的に制限するものではなく、アプリケーションで同期を取る為の機能です。従って共有メモリのアクセスの為だけに使用するのではなく、複数ノード間で任意のリソースに対する排他同期をとる場合にも使用できます。
TOPへ
Q8 実際の転送速度はどのくらいですか?
リードでおよそ720MByte/s。ライトでおよそ330MByte/sです。
また共有メモリ⇔メインメモリ間の転送はDMAをサポートしています。
TOPへ
Q9 接続されるノード数によって速度は変わりますか?
はい。各ノードを通過する際のオーバーヘッドがあります。データを送出したノードのすぐ隣のノードと一番遠いノードとではデータの到着時間が異なります。ノードを通過する際のオーバーヘッドは約450nsです。またケーブル長によっても遅延が発生します。1m当たり約6nsで計算されます。
TOPへ
Q10 データの遅延時間を計算できますか?
はい。通信プロトコルは独自のトークン方式を採用しており、各ノードはトークンが自ノードに来た時点でデータを送出します。送信を行う場合のベストケースはトークンが自ノード上にある場合、ワーストケースはトークンが過ぎた時点で送信する場合です。以下に例を示します。

【ノード数=4、ID 0からID 3へ送信する場合(ノード間10m想定)】
・ ベストケース 0→1→2→3  ノード通過数=3×(450+60)ns 約1.5μs
・ ワーストケース 1→2→3→0→1→2→3 ノード通過数=6×(450+60)ns 約3.0μs

TOPへ
Q11 サポートするOSは何ですか?
Windows2000/XP, Linux、VxWorksの各ドライバーを用意しています。
詳しくは弊社営業にご相談ください
TOPへ
Q12 ITRONや他OSでも使用できますか?
もちろん可能です。標準ドライバーは用意しておりませんが、実際にはメモリアクセスの概念ですので特別なS/Wは不要です。アプリケーションから直接R/Wする事も可能です。MMUを使用している場合や割り込みを使用する場合はOSによってはドライバーをお客さまで用意する必要があります。
詳しくは弊社営業にご相談ください
TOPへ
Q13 その他、注意する点はありますか?
例えばx86システムとPowerPCシステムで通信をする場合は、「エンディアン」が異なりますので注意が必要です。通信するデータの特性によっては相手のエンディアンに合わせる必要があります。
TOPへ
Q14 どんなアプリケーションが考えられますか?
分散処理を考えると、あるノードでデータを収集しそれを他ノードで分散処理するようなケースです。データは画像データであったり、他ノードの演算結果であるケースも考えられます。
逆に集中処理を考えると、各ノードが収集したデータを管理ノードで一括管理するような場合にも利用できます。また単純にデータ転送の経路としても利用できますので、画像データ+制御データを同じ経路に流す事が可能となり省配線化にも有効です。
TOPへ
Q15 APC-730はPCI空間にどのようにマッピングされますか?
APC-730はベースアドレスを3個持っています。これらはPCIのメモリ空間としてマッピングされますのでドライバの対応していない環境(OS)でも容易にアクセスする事が可能です。
また、共有メモリ空間はそのまま128MBがアサインされますのでウィンドウ切り替えなども必要ありません。
TOPへ
Q16 APC-730のメモリ容量は?
128MByteとなります。現状これ以上のメモリを登載している製品はありません。
TOPへ
Q17 他社のファイバーチャネル製品と互換はありますか?
プロトコルがアバールデータオリジナルとなっているため互換はありません。
TOPへ
Q18 トークン、フレームなど言葉の意味を教えてください。
以下に主な語彙を解説します。

トークン ループを常に巡回していてループ中に1個だけ存在する。
データがないフレームはTokenのみとなるのでフレーム=Tokenとして説明している部分もある。
フレーム フレームは SOF, Block(データ),Token,CRC,EOFで構成。
ブロック 1KB(最大)のデータ+ヘッダ8バイトで構成。
ノード APC -APC730やAGM-730を指す。
ループ APC-730やAGM-730間を光ケーブルで接続した通信路。

フレーム構成
SOF
(Start Of Frame)
4Byte
Block1
Header
8Byte
Data
1KB(max)
Token
4Byte
CRC
4Byte
EOF
(End Of Frame)
4Byte
TOPへ
Q19 AGM-730とAPC-730は接続可能でしょうか?
2Gbps製品同士(APC-730-2GとAGM-730-2G)は接続可能です。また4Gbps製品同士(APC-730-4GとAGM-730-4G)も接続可能です。ただし2Gbpsと4Gbps製品の混在では接続は不可能です。
TOPへ
Q20 DMAで自ノード共有メモリへライトした場合、他ノードの共有メモリの更新タイミングは?
DMA、PIOを問わず共有メモリへのライト動作では同時にデータの送信を行っています。 よってメモリへのライトが完了した時点でデータの送信は完了します。

但し、正確には送信完了=受信完了ではないので、データ更新の同期をとるには、データ送信後に ドアベルレジスタを用いて各ノード間でハンドシェイクをとる事をお奨めします。
TOPへ
Q21 ドアベルレジスタとはどういった機能のレジスタでしょうか?
複数ノード間でステータスをやり取りできるレジスタです。
ステータス通知に合わせて割り込みも発生させる事が可能です。
制限事項として対応ノード数は 32台までとなります。またAGM-730には実装されていないレジスタですのでAPC-730とAGM-730間でやり取りを行う時はAGM-730 Host I/Fバスに別途回路を用意する必要があります。

参考資料: APC-730ユーザーズマニュアル『3.8.15 ドアベル要求レジスタ』 AGM-730アプリケーションノート『2.8 ドアベルレジスタアクセス』
TOPへ
Q22 ブロックバーストモードとはどういったものですか?
ノーマルモード時は1ノード当たりの送信ブロックが1ブロック( 1Kbyte)となります。
ブロックバーストモード時は送信ブロックが最大16ブロック(16Kbyte)となりますので転送速度が向上します。 (下図参照)
但し、 ブロックバーストモード使用時はリトライ動作が無効となるのでご注意ください。

ノーマル時のフレーム構成
SOF Block1 Token CRC EOF

ブロックバースト時のフレーム構成
SOF Block1 Block2 Block3 ・・・ Block1 Block1 Token CRC EOF
TOPへ
Q23 ブロックバーストモードはどのように設定しますか?
APC-730では回線制御レジスタ(Offset C0h)にて行います。
AGM-730では『BB_Size[1:0]』信号で設定可能です。
設定時は『RETRY_EN』信号の設定を“0”(無効)としてください。
TOPへ
Q24 一般的なデータ転送はどういったフローとなりますか?
APC-730からAGM-730へデータを送る場合を例に以下説明します。

@ APC-730に対してライトDMAで共有メモリへ指定サイズ分データ転送します。
A 指定サイズ分のDMAが終了(DMA終了割り込みで確認)したら、ドアベルレジスタにてAGM-730へデータ転送が終了した事を通知します。
B AGM-730側でドアベルを受信し、AGM-730 Host I/Fバス側の処理が完了した時点でAPC-730に対してドアベルで受信完了を通知します。
C APC-730側はAGM-730からの受信完了通知(ドアベル)を待ち、受信完了が確認できたら次のDMAライトの作業へ移行します。

項目@〜Cの繰り返してAPC-730とAGM-730双方のハンドシェイクを取りながらデータ転送を行います。ハンドシェイクせずに次々とDMAしても動作上問題ありませんが、受信側のデータを処理する時間が間に合わないとデータを上書きするので、データの整合性が保証されません。
TOPへ
Q25 データエラーのチェックなどありますか?エラー発生時は、再送処理など行われますか?
CRC及び8B10Bコードチェックでエラーを検出しています。回線上でエラーが発生した時はハードウェアによるリトライ(データ再送)が行われます。ただしブロックバーストモード時はリトライ無効です。
TOPへ
Q26 ループの中の1台が故障するとどうなりますか?
トークンリング方式による通信なので 1箇所でも故障、ケーブル断線が発生すると通信が出来なくなります。故障個所の特定はLNK(リンク)LED又は回線制御レジスタで確認する事が出来ます。
TOPへ
Q27 フレームの管理はどの様に行われていますか?
ディップスイッチで設定したマスターノードがフレームを発行します。また各ノードはタイマーを内蔵しており、設定時間内にフレームが巡回してきているかをチェックします。これらの制御はハードウェアが処理しており、ソフトウェアの介在はありません。
TOPへ
Q28 BER(ビットエラーレート)はどのくらいですか?
ボードとしての保証値ではありませんが、光モジュール単体と SERDESデバイス単体では、それぞれ1×10 -12 を保証しています。
TOPへ
Q29 ノード遅延とはどういう意味ですか?
1ノードでフレームが通過するのに要する時間です。この時間はノード数が多くなればなるだけ加算されます。フレームがループを1周する時間もそれだけ長くなりますので転送レートも比例して低下する傾向にあります。

各機種ごとのノード遅延値
機種名 ノード遅延
APC-730-2G/AGM-730-2G 600ns
APC-730-4G/AGM-730-4G 500ns



(ケーブル遅延は除く)
730-4Gが2ノードの場合フレームがループを1周する時間は500ns×2=1us
730-4Gが4ノードの場合フレームがループを1周する時間は500ns×4=2us
TOPへ
Q30 カタログに記載されている転送速度はどういった測定方法となりますか?
1 ノード、ループバック接続で測定しています。
ライトは DMA にて共有メモリへ転送。リードは共有メモリから PC のメインメモリまでの時間を測定しています。
ライト時間が遅い理由はモリへライトしながら回線へ送信するハード仕様となっているため回線の帯域に依存した数値となっているためです。

ここで示す値はボード単体の能力を示していますので、実アプリケーションでの転送速度は OS や PC 環境、使用ノード数、光ケーブル長により可変しますので別途測定が必要となります。
TOPへ
Q31 転送速度の理論値は算出可能でしょうか?
ハードウェアのみを考慮した理論値は算出可能です。

APC-730-4Gを例に以下計算します。
転送速度=データ数÷転送時間
    =データ数÷(データ転送時間+回線遅延時間)
    =8192bit÷(データ転送時間+(ノード遅延+ケーブル遅延))

APC-730-4Gを1mケーブルで2ノード接続した場合(送信は1ノードのみ)
  データ転送時間:((8192bit+64bit)×1.25 )÷ 4.25Gbps≒2.428us
  ノード遅延  :500ns×2ノード=1us
  ケーブル遅延 :約5ns/m×2本≒10ns
  これらの値を代入すると、
  8192bit÷(2.428us+1us+10ns)≒2.4Gbps÷8=300MByte/s

回線部分のみを考慮した理論値となります。OSやPCの構成によっても転送速度は変化しますのでボード検討の際は実機による速度評価をお奨めいたします。

TOPへ
Q32 OSによる転送時間の差はありますか?
OSやPCの環境等により転送速度に差が生じます。
理論値ではこれらの要因を考慮していませんのでご注意ください。
ご使用のシステムがusオーダのリアルタイム性を要求する場合は実機での評価をお奨めします。
実機での評価や転送速度の詳細は別途、弊社営業までお問い合わせください。
TOPへ
Q33 AGM-730同士の接続の場合は、実際にはどのようにデータ転送を行うのですか?
送信時は、システム側より Host I/Fバスに対しMemory Host Writeサイクルを発生させることでデータの送信が行えます。
『AGM-730 アプリケーションノート』内のPage2-10参照

受信時は、AGM-730がデータを受信するとHost I/Fバスに対しMemory Host Readサイクルを自動的に発生させます。Host I/Fバスから受け取ったデータをお客様システムのメモリへ格納します。
『AGM-730 アプリケーションノート』内のPage2-12参照

TOPへ
Q34 AGM-730にはレジスタはありますか?
レジスタは存在しません。 Host I/Fバス上に別途構築する必要があります。
TOPへ
Q35 AGM-730を実装するボード(システムボード)の設計で注意することはありますか?
AGM-730アプリケーションノート 『第3章 システムボードデザイン』を参照ください。
ボード設計に関する推奨事項が掲載されています。
TOPへ
Q36 AGM-730 Host I/FバスにあるBG#(バスグラント)はループ上のある1台が取得すると他のノードは取得できないという事でしょうか?言い換えるとループ上にAGM-730が複数台存在する場合送信可能なノードは同時刻で1台だけになりますか?
ループ上にはフレームが常に巡回しており、自ノードに来た時に送信 FIFOにあるデータを送信可能となります。同時刻にはフレームがあるノードのみが送信可能ですがBG#(バスグラント)が取得できないと言うわけではありません。AGM-730内部には送信FIFOが3Kbyte用意されているので受信がなく送信FIFOに空きがあればBG#を取得する事が出来ます。
ループ内の各AGM-730は非同期でアクセスする事が可能です。
TOPへ
Q37 AGM-730はバッファ(FIFO)を持っていますか?
送信FIFOとして用意している容量は、3KByteになります。
受信FIFOとして用意されている容量は、2KByteになります。
TOPへ
Q38 AGM-730アプリケーションノート 『2-15 2.2.7項  送信側 FIFO のオーバーフロー防止のため、Memory Host Write アクセスを行う場合、1Block ごとにバスの取得(#BR のアサート)、開放(#BR ネゲート)動作を行うことをお薦めします』とありますが詳しい説明をお願いします。
この注記は受信データを考慮しての内容となります。(受信FIFOのオーバーフロー防止) 自ノードにフレーム及びデータがありデータの受信が発生している場合、ユーザ回路からの送信によりHost I/Fバスが取られていると受信したデータをHost I/Fバスに出力できず、AGM-730内部受信FIFOのオーバーフローを発生させる可能性があります。
フレームが他のノードにある場合や、データ連結されていない場合などデータ受信が発生しないときは、1Blockのデータを書き込みバスを開放した後、またバス取得要求を行えばすぐにバスを取得することが可能になります。
TOPへ
Q39 AGM- Host I/Fバスでは64ビットアクセスのみ可能でしょうか?また2Gbpsと4Gbpsではバスの動作やバス幅は変わるのでしょうか?
2Gbps/4Gbpsともに64ビットアクセスですがバイトイネーブルを使用することで64ビット以下のアクセス(8/16/24/32/40/48/56ビット)も可能となります。2Gbps/4Gbpsでバスの信号や動作に違いはありません。
TOPへ
Q40 AGM-730を複数台接続して通信する場合、特定の2台だけで通信する事は可能ですか?
1台からのライトデータは接続される全ノードへ送信されます。特定のノードのみ受信するには以下の様な回路を構築する必要があります。
・ データの先頭数バイトに送信したいノード番号を書き込んで送信し、受信側で先頭データに書かれたノード番号をチェックする。該当していればデータ取得、非該当ならば読み捨てる。
・ ノード間のハンドシェイクレジスタを構築し、レジスタでハンドシェイクしているノードのみデータを取得。それ以外のノードは読み捨てる。

*参考ですので、お客様に沿った対応方法は弊社営業までお問い合わせください。
TOPへ
Q41 AGM-730を評価する機材はありますか?
ATB-425があります。この基板はAGM-730を実装できるコネクタとFPGAが登載されておりUSBのインターフェイスも実装されています。カタログ品ではありませんので弊社営業までお問い合わせください。
TOPへ
Q42 APC-730はDualCPUに対応していますか?
APC-730はPCIバスからのバスサイクルを順に処理する設計となっています。(図1)
Dual CPU環境でマルチスレッドによるAPC-730へのアクセスは図2の様になります。

図2の赤枠部分を注目するとスレッド2からのリード要求が完了する前にスレッド1からのライト要求が発生します。APC-730は仕様上、リード要求を受け付けるとリード 動作が完了するまで次のサイクル要求を受け付けません。その結果OSが全く動作しない(ハングアップ)現象となります。

APC-730をマルチスレッドで動作させるアプリケーションでは図3に示すような排他アクセスを行うことでハングアップを回避することが可能です。

TOPへ