Hi all,
I have looked DMA topic on MSDN many times. However, I’m also confused about
the difference between System DMA(*subordinate DMA*) and bus-master DMA.
Could anyone help me to explain it?
Thanks.
Fan
Hi all,
I have looked DMA topic on MSDN many times. However, I’m also confused about
the difference between System DMA(*subordinate DMA*) and bus-master DMA.
Could anyone help me to explain it?
Thanks.
Fan
“Subordinate” DMA is used by legacy ISA devices that are unable to act as bus masters and have to rely upon DMA controller that resides on the motherboard. This is just the thing of the past, so that, in practical terms, you can forget about it unless you happen to be electronics hobbyist. PCI devices are supposed to have bus-mastering capabilities so that they can issue cycles on the bus and perform DMA themselves…
Anton Bassov
xxxxx@hotmail.com wrote:
“Subordinate” DMA is used by legacy ISA devices that are unable
to act as bus masters and have to rely upon DMA controller that
resides on the motherboard. This is just the thing of the past,
so that, in practical terms, you can forget about it unless you
happen to be electronics hobbyist. PCI devices are supposed to
have bus-mastering capabilities so that they can issue cycles on
the bus and perform DMA themselves…
It could be coming full-circle (or at lease half circle) the way things
so often do in this industry. Note the new generation of DMA controllers
integrated close to the CPU, such as Intel’s Crystal Beach controller
(part of the Intel I/O Acceleration Technology). They’re mostly thought
of for main memory copy assist, parity generation, and so on; but also
capable of copy to PCIe space (but not from). Given that it’s much more
efficient to push over PCIe than to pull, the optimum solution might be
device-resident DMA engine to copy to host memory and host-resident DMA
engine to copy to device memory.