0
votes

My question is about data transfer between a PCIe peripherial and system memory. Example: Suppose we need to send a big chunk of data ( stored in system memory ) over an Ethernet network.

How will it usually be done ? Will the Ethernet card's controller have to request the data via "Bus Mastering" ( after being programmed by the CPU to do so ) ? Or will a centralized DMA controller near the CPU just write the card's buffers ( after being programmed by the CPU to do so ) ?

In other words: Does the card have to ask for the data ? Or can it simply be written to it via the CPU's DMA ?

1
Usually Ethernet card has its own DMA engine.0andriy

1 Answers

-1
votes

PCIe bulk data transfers are generally performed by the device, using bus mastering, as you guessed.

In your question, you imply that having a separate DMA device do the transfer is simpler than having the device do it, but I think the opposite--it is simpler for the device to do it.