DPDK(二):准备知识11 --- 网卡DMA控制器

1、简介
DMA(Direct Memory Access,直接存储器访问)。在DMA出现以前,CPU与外设之间的数据传送方式有程序传送方式、中断传送方式。CPU是经过系统总线与其余部件链接并进行数据传输。DMA的出现就是为了解决批量数据的输入/输出问题。DMA是指外部设备不经过CPU而直接与系统内存交换数据的接口技术。这样数据的传送速度就取决于存储器和外设的工做速度。测试

一、能向CPU发出系统保持(HOLD)信号,提出总线接管请求;
二、当CPU发出容许接管信号后,负责对总线的控制,进入DMA方式;
三、能对存储器寻址及能修改地址指针,实现对内存的读写;
四、能决定本次DMA传送的字节数,判断DMA传送是否借宿。
五、发出DMA结束信号,使CPU恢复正常工做状态。
DMA的数据传送分为预处理、数据传送和后处理3个阶段。
(1)预处理
由CPU完成一些必要的准备工做。首先,CPU执行几条I/O指令,用以测试I/O设备状态,向DMA控制器的有关寄存器置初值,设置传送方向、启动该设备等。而后,CPU继续执行原来的程序,直到I/O设备准备好发送的数据(输入状况)或接受的数据(输出状况)时,I/O设备向DMA控制器发送DMA请求,再由DMA控制器向CPU发送总线请求(统称为DMA请求),用以传输数据。
(2)数据传送
DMA的数据传输能够以单字节(或字)为基本单位,对于以数据块为单位的传送(如硬盘),DMA占用总线后的数据输入和输出操做都是经过循环来实现。须要特别之处的是,这一循 环也是由DMA控制器(而不是经过CPU执行程序)实现的,即数据传送阶段是彻底由DMA(硬件)来控制的。
(3)后处理
DMA控制器向CPU发送中断请求,CPU执行中断服务程序作DMA结束处理,包括检验送入主存的数据是否正确,测试传送过程当中是否出错(错误则转入诊断程序)和决定是否继续使用DMA传送其余数据块等指针

相关文章
相关标签/搜索