一种缓冲区配置方法及装置制造方法及图纸

技术编号:11209866 阅读:126 留言:0更新日期:2015-03-26 19:14
本发明专利技术涉及数据传输技术。本发明专利技术针对现有技术DMA数据传输系统对缓存占用大的问题公开了一种缓冲区配置方法,包括步骤:A、构建一个长度为n的缓冲区描述符BD环,初始化为不可接收状态;n为正整数,由系统参数决定;B、申请m个缓冲区,存放于缓冲区池;m为正整数,m<n;C、申请k个缓冲区,挂接到所述BD环的前k个上,对应BD置于可接收状态,启动硬件接收,k为正整数,k≤m;D、BD完成直接存储器访问DMA数据接收后,查询当前完成接收的BD个数z,从缓冲区池中取z个缓冲区,挂接到所述BD环的第k个BD后面,对应BD置为可接收状态,释放接收信号量,唤醒接收任务。本发明专利技术算法简单,能够保证在性能不受影响的情况下,减少缓存占用。

【技术实现步骤摘要】
一种缓冲区配置方法及装置
本专利技术涉及数据传输技术,特别涉及数据传输系统缓冲区配置方法及装置。
技术介绍
随着网络的飞速发展,网络设备性能大幅提升。以路由器设备为例,接口速度从以前的百兆口发展到现在的万兆口。在呈现形式上,固化口和可扩展口数目也在不断增加。网络设备性能的提升,必然要求CPU处理速度和内存容量相应增加。对于任何一种设备,内存都是重要资源,在性能一定的情况下,软件对内存的消耗越小越好。 数据通信设备中,路由器是一种工作于网络边缘的数据选路设备。路由器中的各个通信接口在实现数据传输的方式上可能各有不同。其中非常重要的一种传输方式是DMA (Directory Memory Access,直接存储器访问)传输。DMA传输是相对于中断传输的一种数据传输方式,其基本原理是通过DMA控制器,将数据在内存和外设之间进行独立传输,而不需要CPU中断的干预,从而节约CPU资源。 一个完整的DMA传输过程必然经过下面4个步骤: 1、DMA 请求 CPU对DMA控制器初始化,并向I/O (input/output)接口发出操作命令,I/O接口提出DMA请求。 2、DMA 响应 DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。当CPU执行完当前总线周期,即可释放总线控制权。此时,总线裁决逻辑输出总线应答,表示DMA已经响应,通过DMA控制器通知I/O接口开始DMA传输。 3、DMA 传输 DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM (Random-Access Memory)与I/O接口进行DMA传输。在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过中不需要中央处理器的参与。开始时需提供要传送的数据的起始位置和数据长度。 4、DMA 结束 当完成规定的数据传送后,DMA控制器即释放总线控制权,并向I/O接口发出结束信号。当I/o接口收到结束信号后,一方面停止I/O设备的工作,另一方面向CPU提出中断请求,使CPU从不介入的状态解脱,并执行一段检查本次DMA传输操作正确性的代码。最后,带着本次操作结果及状态继续执行原来的程序。 由此可见,DMA传输方式无需CPU直接控制,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为内存与外设开辟一条直接传送数据的通路,使CPU的效率大为提闻。 在数据通信领域,主流CPU通信处理子模块都大量使用了 DMA传输机制。DMA传输机制的实现,均需要在内存中分配一片环状缓冲区,用于存放DMA操作所需要的状态和数据,行业里面称成这片区域为BD (Buffer Descriptor,缓冲区描述符)。 DMA数据接收过程中,BD通常配置成环状,称为BD环。BD环结构一般可以分成两部分:状态域和指针域,分别为4字节,合计8个字节长度。状态域一般包含接收使能位、中断使能位和接收状态域;指针域用于存放待操作的缓存地址。实现DMA数据接收处理流程,当前业界通常的作法主要有下面两种方案。 方案一 申请包含η个BD的BD环; 申请η个缓冲区(buffer),挂到BD环上; 将BD环信息设置到硬件; 初始化所有BD,并打开中断,设置BD状态为可以接收状态; 使能硬件接收; 每个BD完成DMA接收后会产生中断,在中断服务程序中唤醒接收任务; 接收任务主要是查询状态为“接收完成”的BD,摘除其缓存交给上层模块处理,同时申请新的缓冲区,挂接到该BD上,并将该BD重新置为“可以开始接收”状态。 BD环结构图1所示。 接受任务中获取在中断处理函数中释放的信号量,防止接收任务空转以节约CPU资源。接收任务处理流程如图2所示。 该方案的优点是实现简单,尤其是初始化过程,一开始就挂满BD环,只需要在接收任务中,逐个回收并重新挂接。但是有一个缺点:在任何时候BD环都是满的,占用了 η个缓冲区。如果接口密度大,并且BD环比较长,就会占用大量的缓存。比如一个千兆以太口,BD个数为1024,当存在20个GE (Gigabit Ethernet) 口的时候,任何时间都会至少需要20k个缓冲区。 方案二 与方案一基本上相同,主要区别在于不用打开DMA中断。根据系统不同,接收数据的操作可能是单独任务,也可能是专用模块的轮询调用接收处理接口。与方案一存在同样的缺点,这里不再赘述。 上述两种方案,在低速率低密度接口上缺陷不太明显,但是一旦在高速率和高密度设备上,占用的缓存的数目就会很大,缺陷就会非常明显。
技术实现思路
本专利技术的目的就是提供一种缓冲区配置方法,在不影响系统性能的前提下,减少DMA数据传输系统对缓存的占用。 为达到上述目的,本专利技术采用的技术方案是,一种缓冲区配置方法,包括步骤: A、构建一个长度为η的缓冲区描述符BD环,初始化为不可接收状态;η为正整数,由系统参数决定; B、申请m个缓冲区,存放于缓冲区池;m为正整数,m < η ; C、申请k个缓冲区,挂接到所述BD环的前k个上,对应BD置于可接收状态,启动硬件接收,k为正整数,k^m; D、BD完成直接存储器访问DMA数据接收后,查询当前完成接收的BD个数z,从缓冲区池中取Z个缓冲区,挂接到所述BD环的第k个BD后面,对应BD置为可接收状态,释放接收信号量,唤醒接收任务。 优选的,所述方法还包括如下步骤: E、接收任务获取接收信号量,从软件记录的当前BD开始轮询,依次处理当前已经接收完成的BD,将其接收状态清零,并释放所述已经接收完成的BD挂接的缓冲区; F、在缓冲区池中的m个缓冲区已经取出z个缓冲区后,再申请z个缓冲区补充到缓冲区池中。 优选的,m<n/2。 优选的,当η取值为1024时,m取值为128。 具体的,所述步骤D具体为:BD完成DMA数据接收后,产生中断,在中断服务程序中查询当前完成接收的BD个数z,从缓冲区池中取z个缓冲区,挂接到所述BD环挂接的第k个缓冲区后面,并置为可接收状态,释放接收信号量,唤醒接收任务。 本专利技术的另一个目的是,提供一种缓冲区配置装置,包括BD构造模块、缓存申请模块和中断处理模块, 所述BD构造模块,用于构建一个长度为η的BD环,初始化为不可接收状态;η为正整数,由系统参数决定; 所述缓存申请模块,用于申请m个缓冲区,存放于缓冲区池;m为正整数,m<n ;并用于申请k个缓冲区,挂接到所述BD环的前k个上,对应BD置于可接收状态,k为正整数,k ^ m ; 所述中断处理模块,用于BD完成DMA数据接收后,查询当前完成接收的BD个数z,从缓冲区池中取z个缓冲区,挂接到所述BD环的第k个BD后面,对应BD置为可接收状态,释放接收信号量,唤醒接收任务。 优选的,所述装置还包括数据传输模块,所述数据传输模块,用于从记录的当前BD开始轮询,依次处理当前已经接收完成的BD,将其接收状态清零,并释放所述已经接收完成的BD挂接的缓冲区; 所述缓存申请模块,还用于在缓冲区池中的m个缓冲区已经取出z个缓冲区后,再申请z个缓冲区补充到缓冲区池中。 优选的,m<n/2。 优选的,当η取值本文档来自技高网
...
一种缓冲区配置方法及装置

【技术保护点】
一种缓冲区配置方法,其特征在于,包括步骤:A、构建一个长度为n的缓冲区描述符BD环,初始化为不可接收状态;n为正整数,由系统参数决定;B、申请m个缓冲区,存放于缓冲区池;m为正整数,m<n;C、申请k个缓冲区,挂接到所述BD环的前k个上,对应BD置于可接收状态,启动硬件接收,k为正整数,k≤m;D、BD完成DMA数据接收后,查询当前完成接收的BD个数z,从缓冲区池中取z个缓冲区,挂接到所述BD环的第k个BD后面,对应BD置为可接收状态,释放接收信号量,唤醒接收任务。

【技术特征摘要】
1.一种缓冲区配置方法,其特征在于,包括步骤: A、构建一个长度为η的缓冲区描述符BD环,初始化为不可接收状态;η为正整数,由系统参数决定; B、申请m个缓冲区,存放于缓冲区池;m为正整数,m<n; C、申请k个缓冲区,挂接到所述BD环的前k个上,对应BD置于可接收状态,启动硬件接收,k为正整数,k彡m; D、BD完成DMA数据接收后,查询当前完成接收的BD个数z,从缓冲区池中取z个缓冲区,挂接到所述BD环的第k个BD后面,对应BD置为可接收状态,释放接收信号量,唤醒接收任务。2.根据权利要求1所述的缓冲区配置方法,其特征在于,所述方法还包括如下步骤: E、接收任务获取接收信号量,从软件记录的当前BD开始轮询,依次处理当前已经接收完成的BD,将其接收状态清零,并释放所述已经接收完成的BD挂接的缓冲区; F、在缓冲区池中的m个缓冲区已经取出z个缓冲区后,再申请z个缓冲区补充到缓冲区池中。3.根据权利要求1或2所述的缓冲区配置方法,其特征在于,m< n/2。4.根据权利要求1或2所述的数据传输系统缓存配置方法,其特征在于,当η取值为1024时,m取值为128。5.根据权利要求1或2所述的缓冲区配置方法,其特征在于,所述步骤D具体为:BD完成DMA数据接收后,产生中断,在中断服务程序中查询当前完成接收的BD个数z,从缓冲区池中取z个缓冲区,挂接到所述BD环挂接的第k个缓冲区后面,并置为可接收状态,释放接收信号量,唤醒接收任务。6.一种缓冲区配置装置,其特征在于,所述...

【专利技术属性】
技术研发人员:王刚杨大川
申请(专利权)人:迈普通信技术股份有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1