PCIe卡如何将数据DMA到CPU RAM中?

tom*_*cat 5 dma pci pci-e

这是参考对类似 dma/pci 问题给出的答案我从这个答案中得知,PC 没有能够将数据传输到 PCI 卡或从 PCI 卡传输数据的 DMA,并且 PCI 卡必须提供 DMA 功能。我从同事那里收到了类似的答案,他们说:“FPGA(指 PCI 卡)上需要有双向 DMA,以实现与 CPU 内存之间的突发传输。”

我的理解是,当PC收到读取请求时,它需要通过创建包含请求数据的返回数据包来完成读取请求。因此,如果卡请求一页数据(4096 字节),PC 需要返回一个 4096 字节的数据包。卡的 dma 如何到达总线并使用它的 dma 来填充所需的数据包,正如这个答案所建议的那样?

Tim*_*lin 2

我想这里面可能有一个误会。该卡不会“跨越”总线来使用 PC 中的 DMA 功能。

该卡本身就是一个总线主控器。它可以像CPU一样直接读写PC的整个内存。从PC内存系统的角度来看,PC中的卡或主CPU没有区别。两者都是总线主控。两者都可以对内存执行读取和写入操作。

不支持 4096 字节的突发。您必须将其分成多个较小的突发。