パケット分割および結合の接続 - 2023.2 日本語

AI エンジン カーネルおよびグラフ プログラミング ガイド (UG1079)

Document ID
UG1079
Release Date
2023-12-04
Version
2023.2 日本語
pktmergepktsplit を接続することで、複数のストリーム間で配線を共有させることができます。pktsplit に接続された pktmerge を介してバッファーが転送される場合、各 pktmerge.in[i] は対応する pktsplit.out[i] に配線されます。pktmerge の入次数は pktsplit の出次数と等しくなければなりません。グラフ コードは次のとおりです。
for (int i=0; i<WAYS; i++) {
  connect<>(plioIn[i].out[0], kOut[i].in[0]);
  connect<>(kOut[i].out[0], merge.in[i]);
  connect<>(split.out[i], kIn[i].in[0]);
  connect<>(kIn[i].out[0], plioOut[i].in[0]);
}
connect<> (merge.out[0], split.in[0]);
グラフは次のように表示されます。
図 1. pktmerge と pktsplit 間のグラフ表示

パケット分割および結合のサイズ

現在のところ、最大で 32 のストリームのパケット スイッチングがサポートされています。最大 32 対 1 の pktmerge および 1 対 32 の pktsplit がサポートされています。大規模な fanout/fanin (16/32 ストリーム) でパケット スイッチングを使用すると、リソースの面でコストがかかり、デザインでこれらを使用する場合は注意が必要です。

パケット分割および結合のブロードキャスト

ストリームが pktmerge から pktsplit を通過するとき、pktsplit からのブロードキャストがサポートされます。たとえば、pktmerge.in[i] は、対応する複数のデスティネーションにブロードキャストされ、そこから pktsplit.out[i] に接続されます。次に、merge.in[WAYS-1]split.out[WAYS-1] および split.out[WAYS] にブロードキャストされるコード例を示します。
for (int i=0; i<WAYS; i++) {
  connect<>(plioIn[i].out[0], kOut[i].in[0]);
  connect<>(kOut[i].out[0], merge.in[i]);
  connect<>(split.out[i], kIn[i].in[0]);
  connect<>(kIn[i].out[0], plioOut[i].in[0]);
}
connect<>(split.out[WAYS-1], kIn[WAYS].in[0]);
connect<>(kIn[WAYS].out[0],plioOut[WAYS].in[0]);
connect<> (merge.out[0], split.in[0]);

グラフは次のように表示されます。

図 2. ブロードキャストを使用する pktmerge と pktsplit 間のグラフ表示