发明名称 一种提高多数据缓冲区DMA效率的系统和方法
摘要 本发明提供了一种提高多数据缓冲区DMA效率的系统和方法,包括:(1)当应用程序向数据缓冲区填入数据时,缓冲区的相关信息通过主机IO总线送往网卡并存储在数据缓冲区信息管理模块。(2)数据缓冲区信息管理模块检测到数据缓冲区中有数据需要发送时,就从缓冲区相关信息中提取出待发送数据的地址和长度,并送往DMA请求队列。(3)DMA请求队列将对数据块的请求组织为一个或多个符合主机IO总线要求的DMA请求,并发送到主机。(4)主机的DMA控制器响应接收到的DMA请求,将被请求的数据通过主机IO总线发送网卡上。本发明提供的提高多数据缓冲区DMA效率的系统和方法,基于非描述符机制的多队列DMA引擎,提高主机IO总线的利用率和报文发送速度。
申请公布号 CN102541779B 申请公布日期 2015.07.08
申请号 CN201110383370.4 申请日期 2011.11.28
申请人 曙光信息产业(北京)有限公司 发明人 李旭;窦晓光;张磊;纪奎;李静;白宗元;张英文
分类号 G06F13/28(2006.01)I 主分类号 G06F13/28(2006.01)I
代理机构 北京安博达知识产权代理有限公司 11271 代理人 徐国文
主权项 一种提高多数据缓冲区DMA效率的方法,其包括:(1).向数据缓冲区填入数据时,数据缓冲区信息通过主机IO总线送往网卡并存储在数据缓冲区信息管理单元;所述数据缓冲区信息管理单元包括:Buffer Info模块、Lock模块、Buffer Number模块1、Block Address模块、Block Length模块、DMA Info Available模块和Ack for DMA Read Pointer Write Back模块;(2).从缓冲区相关信息中提取出待发送数据的地址和长度,并送往DMA请求队列;所述DMA请求队列包括:Ack for DMA Info模块、Buffer Number模块2、DMA Read Pointer模块、DMA Read Pointer Write Back Request模块和DMA Read Request Sender模块;在所述步骤(2)中,所述数据缓冲区信息管理单元优先处理DMA Read Pointer Write Back Request模块,随后检查是否有缓冲区正在等待处理,如果等待处理的缓冲区请求未被DMA请求队列所接受,则重新执行此流程,否则将所述DMA Info Available模块置0;(3).DMA请求队列将对数据块的请求组织为一个或多个符合主机IO总线要求的DMA请求,并发送到主机;(4).主机的DMA控制器响应接收到的DMA请求,将被请求的数据通过主机IO总线发送网卡上;在所述步骤(4)中,如果已有数据缓冲区正在等待处理,且能仲裁出空闲的请求队列,则将等待处理的缓冲区信息送往空闲的DMA请求队列,将所述Ack for DMA Info模块置为1;所述数据缓冲区信息管理单元提供数据缓冲区号和读指针信息;内部号为缓冲区号的数值模DMA请求队列数量所得的余数;所述DMA Read Pointer Write Back Request模块的处理过程包括:仲裁出一个已处理完缓冲区数据请求任务的DMA请求队列,将要写回的数据缓冲区号和读指针信息送往数据缓冲区信息管理单元并将DMA Read Pointer Write Back Request模块置为1;如果此时Ack for DMA Read Pointer Write Back模块置1,则将DMA Read Pointer Write Back Request模块置0;其中,缓冲区号的低位由DMA请求队列号RRS Number构成,高位由内部号Internal Number构成。
地址 100084 北京市海淀区水磨西街64号