DMA Engines之Scatter-Gather DMA
在实现PCIe总线传输时看到有Scatter-Gather DMA运输方式,特此记录一下。
首先对常规的DMA基本知识进行简单描述
DMA(Direct Memory Access)即直接内存访问,无需CPU干预情况下即可直接由DMA模块硬件实现数据的快速传输。由于DMA传输方式不需要CPU参与,没有取指令、取数据等CPU操作,因而传输数据更快。早在8086的应用中就已经有了Intel的8237这种典型的DMA控制器。
微控制器的硬件系统一般都是由CPU(内核)、外设、内存(SRAM)、总线等模块组成,数据通常需要在内存和外设之间转移,或者从外设A转移到外设B。由CPU进行数据转移时,占用了CPU宝贵的时间,而且需要取指、译指、执行指令等操作,降低了效率。我们希望的是CPU可以更多地处理运算或者响应中断,而把数据转移的工作交由DMA等其他模块完成,以提高效率。
Scatter-Gather DMA
传统的DMA 一次只能传输物理上连续的一个块的数据, 完成传输后发起中断。而 Scatter-Gather DMA允许一次传输多个物理上不连续的块,完成传输后只发起一次中断。
Scatter-Gather的应用
未完待续…