pcie和dma传输

简单来说,PCIe传输方式中包含DMA传输方式。

  1. PCIe 是一种总线,常见于x86机器中。总线允许多个从设备和控制器完成数据交互。
  2. DMA是一种传输数据常见方式,没有DMA时,数据搬运就纯靠CPU,CPU可以执行计算指令,也可以执行数据传输指令。对于巨量的数据需要传输的场合,CPU当然也可以完成,但是会浪费宝贵的CPU的计算资源。于是有了DMA传输,DMA传输需要硬件支持,一个硬件控制器,一般PCIe从设备都有的,这个DMA控制器主要特性是:它也具有发起内存读写访问的能力,而没有CPU的通用计算能力,可以看作是一个没有计算能力的协助CPU。有大量数据传输时,就交给该DMA控制器去完成传输,CPU可以继续执行计算任务。

DMA传输方式是PCIe总线中最常见和最主要的传输方式,一般PCIe设备上都会有DMA控制器,支持DMA传输。

补充:

PCIe传输方式,其实一共有3种:

Programmed I/O

通过IO读写访问PCI设备空间;PIO在早期的PC中被广泛使用,因外当时的处理器的速度要远远大于任何其他外设的速度,所以PIO足以胜任所有的任务。 举一个例子,比如说某一个PCI设备需要向内存(SDRAM)中写入一些数据,该PCI设备会向CPU请求一个中断,然后CPU首先先通过PCI总线把该PCI设备的数据读取到CPU内部的寄存器中, 然后再把数据从内部寄存器写入到内存(SDRAM)中。PIO已经逐渐被DMA传输方式所取代,但是为了兼容早期的一些设备,PCI Spec依然保留了PIO。

DMA

PIO的方式比较低效,DMA的方式可以直接去访问主存储器而无需CPU干预,效率更高;目前,几乎所有的CPU,甚至是MCU都支持DMA。

Peer-to-peer

两台PCI设备之间直接传送数据;PCI总线系统中的主机身份并不是固定不变的,而是可以切换的(借助仲裁器),但是同一时刻只能存在一个主机。 完成Peer-to-Peer这一传输方式的前提是,PCI总线系统中至少存在一个有能力成为主机的设备。在仲裁器的控制下,完成主机身份的切换,进而获得PCI总线的控制权, 然后与总线上的其他PCI设备进行通信。不过,需要注意的是,在实际的系统中,Peer-to-Peer这一传输方式却很少被使用, 这是因为获得主机身份的PCI设备(Initiator)和另一个PCI设备(Target)通常采用不同的数据格式,除非他们是同一个厂家的设备。

img

img

https://www.zhihu.com/question/550129239/answer/2930254781?utm_id=0


pcie和dma传输
http://witbit.cn/EMBEDDED/pcie和dma传输.html
作者
朝彻
发布于
2025年2月13日
许可协议