5

ここにいくつかの詳細があります。

プロセスが を呼び出すとibv_post_send()、HCA への PCI インターフェイスで何が起こるでしょうか? WQE は PCIe ドアベル内にカプセル化され、プログラムされた IO を介して書き込まれますか? それとも、HCA による別の DMA 読み取りで WQE がフェッチされますか?

プロセスが を呼び出すとどうなりますibv_poll_cq()か? HCA はどのようにして CQE をシステム・メモリーにプッシュしますか? または、プル ベースの場合、CPU は HCA で新しい CQE をどのように検出しますか?

4

1 に答える 1

4

WQE は PCIe ドアベル内にカプセル化され、プログラムされた IO を介して書き込まれますか? それとも、HCA による別の DMA 読み取りで WQE がフェッチされますか?

どちらでもかまいません。通常の方法は、WQE を書き込んでドアベルを鳴らすことです。この場合、HCA は DMA を介して WQE を取得します。あまり一般的ではない方法は、「Blue Flame」と呼ばれるものです。PCIe BAR の一部が WQE に使用され、ドアベルが書き込まれるのと同じ方法で WQE が HCA に書き込まれます。

HCA はどのようにして CQE をシステム・メモリーにプッシュしますか?

HCA は DMA を使用して CQE をシステム メモリに書き込みます。アプリケーションが新しい補完について知るには、ポーリング ベースまたはイベント ベースの 2 つの方法があります。 ibv_poll_cq()ポーリングベースのアプローチで使用されます。

于 2014-01-29T14:48:13.260 に答える