|
ちょいと PCE Express (3.0) の仕様を読む機会があったので。
究極的にはデバイス次第ではあるわけですが、プロトコル上参考になりそうな あたりをざくざくと列挙。
1. プロトコルはトランザクション層、データリンク層、物理層の3層に分かれている。 2. トランザクション層に乗るデータサイズは4バイト単位。 3. トランザクション層で指定できるデータサイズは4096バイト。 4. ただし max payload size というパラメータがあって、この指定によっては4096バイト未満でなければならない場合がある。 5. データリンク層のあれこれは今回の議論にあまり関係なし。 6. 物理層では各バイトが1バイトずつ各レーンに振り分けられる。
2を見る限りだと4バイト (それ以下の単位の指定はできるのか、 さらに上位で何とかするのかまでは調べられてません) となるわけ だけど、6を考えると、レーン数が多ければ8バイトとか12バイトとか にもなりそうな気配 (トランザクション層とデータリンク層で付く ヘッダサイズはいくつだっけ……)。
ただ、こんな小さなサイズに分けてしまうとオーバーヘッドが大きくて非効率。 3、4を考慮すると、max payload size 単位で送るのが最も効率がよく なることが多いんじゃないかな。 # 元質問者さんの本当に聞きたかった内容は、最も効率よく転送できる最小 # サイズじゃないかなと思ったり。
重ねて言いますが、最終的にはデバイス次第です。
|