by support »
Hello,
A DMA engine, in general, is a piece of hardware which initiates data copies from one region to another without the direct intervention of the processor. Whether these data copies turn into efficient PCIe transactions if the relevant bus addresses are mapped to the PCIe bus, is hardware dependent.
This way or another, I don't know about a single x86-based processor that has a DMA engine, and for sure, they're not common. The reason is simple: There has been no motivation to support such a feature, since all consumer peripherals take care of their bus transactions by themselves.
So as far as I know, the only way to do DMA on a PC, is to have the endpoint initiate it.
I might be wrong on this. If someone finds an x86 processor which is DMA capable, please add a post below. Not to mention if this engine creates efficient PCIe traffic (i.e. not a packet for each 4 or 8 bytes).
Regards,
Eli
Hello,
A DMA engine, in general, is a piece of hardware which initiates data copies from one region to another without the direct intervention of the processor. Whether these data copies turn into efficient PCIe transactions if the relevant bus addresses are mapped to the PCIe bus, is hardware dependent.
This way or another, I don't know about a single x86-based processor that has a DMA engine, and for sure, they're not common. The reason is simple: There has been no motivation to support such a feature, since all consumer peripherals take care of their bus transactions by themselves.
So as far as I know, the only way to do DMA on a PC, is to have the endpoint initiate it.
I might be wrong on this. If someone finds an x86 processor which is DMA capable, please add a post below. Not to mention if this engine creates efficient PCIe traffic (i.e. not a packet for each 4 or 8 bytes).
Regards,
Eli