PCI-Xマスタ・アクセスで、512byteをバースト読み出ししてみた。そうすると、例によってスプリット応答が返ってきた。
チップセットからのスプリット完了トランザクションはADB(Allowable Disconnect Boundary, 128byte) ごとにイニシエータが中断した。
この辺が疑問だったのだ。512byte分を全部、チップセットにバッファリングしてから一気に出すのか? それともイニシエータ中断しながら、出すのかが疑問だった。スループットを捨てて、レイテンシを取っているようだ。レイテンシは約1usec。当然、以前の32byteの時の750nsに比べて伸びている。128byteのデータをキャッシュして出しているか、それとも送れる見込みができてからスプリット完了トランザクションを出しているからなのだろう。何しろPCI-XはPCIと違って、128byteごとにしかトランザクションを中断できない。
最初のスプリット完了トランザクションはアトリビュート・フェーズで、512byte分のバイト・カウントを通知している。中断した後の2つ目以降のスプリット完了トランザクションは、当然バイト・カウントを適合させている。(次は512(0x200) - 128(0x80) = 384(0x180)ということ)

注:PCIでは、例えばホストパソコンのメモリをリードするときに、規定時間以内でリード・データが用意できないとリトライをしていた。リード・データが用意できない間は、何度でもリトライを繰り返してしまうために、パスの使用効率が落ちてしまった。PCI-Xはそれを避けるために、なるべくリトライを使わずに、リードを要求するトランザクションにちょっと待ってて後で返事するよ(スプリット応答)と言って、後でデータを要求元にライトする(スプリット完了トランザクション)ようにした。
次は、Maximum Outstanding Split Transactionsがいくつかを探る。
- 2007年08月25日 05:58 |
- PCI
-
| トラックバック:0
-
| コメント:0