GNU/Linux >> Linux の 問題 >  >> Linux

ネットワーク カードの DMA リング バッファと TX/RX リングの関係を教えてください。

短い答え :これらは同じです。

詳細 :まず、あなたの質問に非常に関連するこの投稿を参照してください。

この記事では次のように述べています:

<ブロック引用>

非同期アプローチの変形は、ネットワークカードでよく見られます。これらのカードは、多くの場合、プロセッサと共有されているメモリに循環バッファ (DMA リング バッファと呼ばれることが多い) が確立されていることを期待しています。各着信パケットは、リング内の次に利用可能なバッファに配置され、割り込みが通知されます。その後、ドライバーはネットワークパケットを残りのカーネルに渡し、新しい DMA バッファーをリングに配置します。

DMA リングにより、NIC はソフトウェアが使用するメモリに直接アクセスできます。ソフトウェア (カーネルの場合は NIC のドライバー) がリングにメモリを割り当て、それを DMA メモリとしてマッピングするため、NIC はアクセスできることを認識します。 TX パケットは、ソフトウェアによってこのメモリ内に作成され、NIC によって読み取られて送信されます (通常、ソフトウェアが送信を開始する必要があることを NIC に通知した後)。 RX パケットは NIC によってこのメモリに書き込まれ、ソフトウェアによって読み取られて処理されます (通常、作業があることを知らせるために割り込みが発行された後)。

これがお役に立てば幸いです。


<オール>
  • リング バッファには、RAM 内のバッファの開始アドレスと終了アドレスが含まれます。TX リングには、送信されるデータを含む RAM 内のバッファのアドレスが含まれます。RX リングには、NIC がデータを配置する RAM 内のバッファのアドレスが含まれます。

    これらのリングは RAM に存在します。

  • TX バッファーと RX バッファーは、TX/RX リングが指す RAM にあります。

  • これで、ネットワーク カード レジスタに RAM 内のリング バッファの場所が追加されました。

  • これで、1 と 2 は DMA 対応バッファになり、DMA TX/RX リングおよび DMA TX/RX バッファと呼ばれます。RX/TX リングは常に維持する必要があるため、メモリの一貫性/コヒーレント DMA タイプとして作成されます。バッファが作成されている間ストリーミング/シングル DMA タイプのメモリ


    Linux
    1. Linuxのバッファメモリとキャッシュメモリの違いは何ですか?

    2. ARM システム コールのインターフェイスは何ですか? また、Linux カーネルのどこで定義されていますか?

    3. DMA-Engine と DMA-Controller の違いは何ですか?

    1. Synaptic Package Manager の削除のマークと完全な削除のマークの違いは何ですか?

    2. コマンド プロンプト パラメーターの 1 ダッシュと 2 ダッシュの違いは何ですか?

    3. rmdir(1) と rm(1) が共存する理由は何ですか?

    1. SSHのauthorized_keysファイルとknown_hostsファイルの違いは何ですか?

    2. Ubuntu Live CD のデフォルトのユーザー名とパスワードは何ですか?

    3. unlink と rm の違いは何ですか?