0

InfiniBand または同様の PCIe デバイスと高速な Intel Core CPU があり、たとえば 8 バイトのユーザー データを IB リンク経由で送信したいとします。また、デバイス ドライバーやその他のカーネルがないことも言います。これを単純に保ち、ハードウェアに直接書き込むだけです。最後に、IB ハードウェアは以前にコンテキストに対して適切に構成されているため、何かが行われるのを待っているとします。

Q: ローカル CPU がデータの場所とデータの送信を開始する必要があることをハードウェアに伝えるには、何 CPU サイクルかかりますか?

詳細情報: CPU ローカル サービス (コプロセッサの使用など) と比較した PCIe 通信サービスの使用コストの見積もりを取得したいと考えています。私が期待しているのは、PCIe バス上のレジスタに多数の書き込みが行われることです。たとえば、パケットのアドレスと長さの設定、およびステータスや制御レジスタの読み取りと書き込みが行われる可能性があります。これらのそれぞれに数百の CPU サイクルがかかると予想されるため、全体的なセットアップには 1000 から 2000 の CPU サイクルがかかると予想されます。私は正しいでしょうか?

私は大まかな答えを探しているだけです...

4

1 に答える 1

1

あなたの球場番号は正しいです。

RDMA 書き込みを使用して 8 バイトのペイロードを送信する場合は、最初にプログラムされた IO を使用して要求記述子を NIC に書き込み、次に NIC が PCIe DMA 読み取りを使用してペイロードをフェッチします。PIO の方が速いはずですが、PIO と DMA の読み取りの両方に 200 ~ 500 ナノ秒かかると予想されます。

要求記述子内にペイロードを配置することで、DMA 読み取りを取り除き、待ち時間を節約できます。

于 2014-07-18T02:38:46.020 に答える