1

async_memcpyを介した DMA ゼロコピー/ゼロサイクル (CPU なし) 転送にIntel I/OATを使用する場合、仮想アドレッシングでデバイスメモリがマップされる場所: カーネルバッファ (カーネル空間) またはユーザーバッファ(ユーザー空間)?

また、最新の x86_64 CPU (CPU コアがチップセットのノースブリッジなしで RAM に高速アクセスできる場合) で I/OAT を使用する意味はありますか?

http://www.intel.com/content/www/us/en/wireless-network/accel-technology.html

4

1 に答える 1

2

メモリが物理メモリであることを考えると、カーネル バッファーとユーザー空間バッファーの両方を含め、カーネルがアドレス指定できる任意のメモリにすることができます。ただし、メモリが奪われないように、「固定」または「ロック」する必要があります (たとえば、メモリを操作している人freeは、別のプロセスに再割り当てするためにメモリを OS に解放してはなりません。その場合、非常に興味深い効果があります)。もちろん、これは他のさまざまな DMA アクセスに適用される規則と同じです。

これが平均的なユーザー モード アプリケーションのデータ構造をコピーするのに役立つとは思えません。一方、インテルが何らかの形で有益であると考えない限り、インテルがこの種の機能をプロセッサーに組み込むとは思えません。私が理解している方法は、ネットワーク受信バッファーを、データを受信して​​いるユーザーモードアプリケーションにコピーするのに役立ち、CPU の関与が少ないということです。必ずしも実際のメモリ転送を大幅に高速化するとは限りませんが (仮にあったとしても)、CPU を からオフロードして他のことを実行します。

少し前に、このテクノロジ (または非常に類似したもの) が最新モデルのプロセッサにも導入されているのを見たので、何らかの利点があると思います。

于 2013-09-01T19:28:25.947 に答える