最近では、PCIドライバプロジェクトを進めており、Scatter Gather DMAを理解しようとしています。
私のプロジェクトでは、PCIデバイス(PCのPCIスロットにある)はDMAマスターであり、PCメモリへのDMA書き込みを実行しようとしています。したがって、分散/収集dmaの場合、PCドライバは「不連続」または「セグメント化された」物理メモリの接続リストを作成し、接続リストの最初のアドレスをデバイスに書き込む必要があります。したがって、デバイスのDMAコントローラは、PCに次の空きメモリブロックを要求せずに接続リストを介して書き込むことができます。私は書きましたか?
上のシーンには「サラウンド」という表現が出てくるのですが、どういう意味なのかよく分かりません。
これは書き込みポインタがメモリブロックの終わりに達することを意味しますか?
または
現在送信するデータパケットが送信されている。次のデータパケットを開始する必要がありますか?
または
他にはありませんか?
答え1
これは次のいずれかを意味できます。選ぶ読んでいる文書に基づいて分散収集DMA:
単一のメモリバッファに詰めます。
- 接続された消費者家電機器内および機器間のダイナミックで強力なストリーミング、ピーター・バンダーストック、151ページ:
メモリ内データの物理的表現は、ハードウェア補助プロセッサに依存する。メモリの固定位置、メモリの開始/終了アドレスを持つfifo、囲む、データを物理メモリに分散できる分散収集DMS。
- マルチデータストリームを処理するための回路、システム、および方法、アメリカ合衆国6055619 A
非分散/収集ストリーミングの場合、ホストシステムメモリまたはホストシステムメモリから転送されたデータは、ホストメモリの循環バッファに保存され、継続的に満たされ、枯渇します。したがって、この場合のPCIトランザクションは、連続したダブルワードメモリアドレスセットにまたがるバースト転送であり、DMAコントローラ208は循環バッファの位置に達するたびに新しいPCIトランザクションを要求する。囲む出発アドレスに移動します。これらの循環バッファの最大サイズは、2014ダブルワードまたは1つのホストページに設定されます。
メモリバッファの「リング」に囲まれている
- PCI 11Wユーザーガイド、EDT公開、18ページ
リングバッファがフリーランモードにあり、アプリケーションができるだけ早くデータを処理できない場合、DMAは囲む参照されたバッファを上書きします。アプリケーションは、オーバーフローを防ぐために、バッファ内のデータがタイムリーに処理またはコピーされるようにする必要があります。