DPDK(二):准备知识11 --- 网卡DMA控制器
一、简介 DMA(Direct Memory Access,直接存储器访问)。在DMA出现之前,CPU与外设之间的数据传送方式有程序传送方式、中断传送方式。CPU是通过系统总线与其他部件连接并进行数据传输。DMA的出现就是为了解决批量数据的输入/输出问题。DMA是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。这样数据的传送速度就取决于存储器和外设的工作速度。 1、能向CPU发出系统保持(HOLD)信号,提出总线接管请求; 2、当CPU发出允许接管信号后,负责对总线的控制,进入DMA方式; 3、能对存储器寻址及能修改地址指针,实现对内存的读写; 4、能决定本次DMA传送的字节数,判断DMA传送是否借宿。 5、发出DMA结束信号,使CPU恢复正常工作状态。 DMA的数据传送分为预处理、数据传送和后处理3个阶段。 (1)预处理 由CPU完成一些必要的准备工作。首先,CPU执行几条I/O指令,用以测试I/O设备状态,向DMA控制器的有关寄存器置初值,设置传送方向、启动该设备等。然后,CPU继续执行原来的程序,直到I/O设备准备好发送的数据(输入情况)或接受的数据(输出情况)时,I/O设备向DMA控制器发送DMA请求,再由DMA控制器向CPU发送总线请求(统称为DMA请求),用以传输数据。 (2)数据传送 DMA的数据传输可以以单字节(或字)为基本单位,对于以数据块为单位的传送