加载中...

DMA(Direct Memory Access,直接内存访问)是一种让外围设备在不占用CPU执行周期的情况下直接与内存交换数据的机制,数据搬运由DMA控制器或设备自身的总线主控能力完成。
没有DMA时,I/O数据需要CPU逐字节执行读写指令搬运(程序控制I/O),高速设备会耗尽CPU算力。使用DMA时,驱动程序先向DMA引擎登记源地址、目的地址和长度,随后CPU即可去做其他工作;传输完成后设备发出中断通知。现代PCIe设备普遍具备总线主控(Bus Mastering)能力,可自行发起对内存的读写,网卡、NVMe固态硬盘、显卡都依赖这一机制达到高吞吐。
IOMMU为设备的DMA提供地址翻译与隔离,防止恶意或故障设备越权访问内存,也是虚拟机设备直通的基础;RDMA则把DMA思想延伸到跨主机网络传输。
DMA将CPU从数据搬运中解放出来,是高性能I/O体系的基础机制。

登录 后参与讨论
暂无讨论,来发表第一条评论吧