首页 > 解决方案 > DMA 和 PCIe 如何协同工作?

问题描述

在 PCIe 配置中,设备具有专用地址,并且它们以对等模式相互发送数据 - 每个设备都可以随时写入,并且交换机会注意正确地转发数据。不需要有一个“总线主控器”来决定何时以及如何传输数据。

DMA 如何在这种配置中发挥作用?对我来说,DMA 似乎是一个过时的功能,在 PCIe 配置中不需要。每个设备都可以向主存储器发送数据,或从中读取数据——显然,在此类操作中,主存储器始终是“从属”。

还是我缺少的 DMA 的其他一些功能?

先感谢您!

标签: dmapci-e

解决方案


当 CPU 以外的设备访问连接到 CPU 的内存时,这称为直接内存访问 (DMA)。所以任何从 PCIe 设备发出的 PCIe 读或写请求都构成了 DMA 操作。这可以通过“设备到设备”或“点对点”DMA 进行扩展,其中设备在不涉及 CPU 或系统内存的情况下相互执行读取和写入。

DMA 有两个主要优点:首先,DMA 操作可以以最小的 CPU 负载将数据移入和移出内存,从而提高软件效率。其次,CPU 只能发出任何 CPU 字长的读取和写入,由于 TLP 标头和其他协议开销,这导致 PCIe 总线上的吞吐量非常差。直接发出读写请求的设备可以发出更大负载的读写操作,从而提高吞吐量并更有效地利用总线带宽。

因此,DMA 绝对不会过时或过时——基本上所有通过 PCIe 连接的高性能设备都将使用 DMA 来有效地使用总线。


推荐阅读