数据访问的实现方法和装置的制作方法

文档序号:6444532阅读:135来源:国知局
专利名称:数据访问的实现方法和装置的制作方法
技术领域
本发明涉及通信领域,并且特别地,涉及一种数据访问的实现方法和装置。
技术背景
通常情况下,在一台主机上需要运行多个网络流量处理应用,每个应用都要处理这台主机接收到的所有数据包。
目前,对于这种需要多应用处理所有数据包的情况,主要是对这些数据包进行拷贝,并且,对于每个应用,均需要进行拷贝一份数据,之后再由各个应用来处理这些数据。也就是说,主机上每多支持一个应用,就要多拷贝一份数据,因此会明显增加系统的负担和数据处理的时间,并且会占用系统的存储空间,降低系统的性能,而当应用的数量比较多时, 上述问题会更加严重。
针对相关技术中数据访问导致系统负担大、数据访问时间长、并且会大量降低系统性能的问题,目前尚未提出有效的解决方案。发明内容
针对相关技术中数据访问导致系统负担大、数据访问时间长、并且会降低系统性能的问题,本发明提出一种数据访问的实现方法和装置,能够避免数据的拷贝,降低系统的负担,减少数据访问的时间,保证了系统的性能不被降低。
本发明的技术方案是这样实现的
根据本发明的一个方面,提供了一种数据访问的实现方法。
该方法包括将需要访问的数据存储在缓冲区中;由多个数据访问单元对缓冲区中的数据进行访问,其中,每个数据访问单元通过其对应的指针对该指针在缓冲区中所指向的数据进行访问,并在该数据访问单元每次访问之后更新指针所指向的位置。
其中,缓冲区包括多个数据队列,在将需要访问的数据存储在缓冲区中时,以不重复的方式将所有需要访问的数据存储至多个数据队列。
并且,由多个数据访问单元对缓冲区中的数据进行访问包括对于每个数据访问单元,该数据访问单元在每个数据队列均配置有指针,且对于每个数据队列,该数据访问单元在该队列中进行一次数据进行访问之后,更新该数据访问单元在该队列的指针所指向的位置。
该方法可进一步包括在缓冲区中的所有需要访问的数据均被多个数据访问单元访问之后,删除缓冲区中保存的数据。
并且,对于每个数据访问单元,根据该数据访问单元所对应指针在缓冲区中所指向的位置,判断该数据访问单元是否访问了缓冲区中所有的数据。
根据本发明的另一方面,提供了一种数据访问的实现装置。
该装置包括缓冲区,用于存储需要访问的数据;多个数据访问单元,用于对缓冲区中的数据进行访问,其中,每个数据访问单元通过其对应的指针对该指针在缓冲区中所指向的数据进行访问,且该数据访问单元每次访问之后更新相应的指针所指向的位置。
其中,缓冲区被划分有多个数据队列,所有需要访问的数据以不重复的方式存储在多个数据队列中。
并且,对于每个数据访问单元,该数据访问单元在每个数据队列均配置有指针,且对于每个数据队列,该数据访问单元用于在该队列中进行一次数据进行访问之后,更新该数据访问单元在该队列的指针所指向的位置。
此外,该装置可进一步包括删除模块,用于在缓冲区中的所有需要访问的数据均被多个数据访问单元访问之后,删除缓冲区中保存的数据。
该装置可进一步包括判断模块,用于对每个数据访问单元,根据该数据访问单元所对应指针在缓冲区中所指向的位置,判断该数据访问单元是否访问了缓冲区中所有的数据,并在判断所有数据访问单元均访问了缓冲区中存储的所有数据的情况下,通知清除模块删除缓冲区中保存的数据。
本发明通过对多个数据访问单元设置指针,能够实现多个数据访问单元对缓冲区的并行访问,避免进行数据的拷贝,降低系统的负担,减少数据访问的时间,保证了系统的性能不被降低。


图1是根据本发明实施例的数据访问的实现方法的流程图2是根据本发明实施例的数据访问的实现方法的原理示意图3是根据本发明实施例的数据访问的实现装置的框图。
具体实施方式
针对对应用访问数据的场景,本发明能够在多个应用间共享所有数据报文,从而很好的支持这种多个应用同时处理的场景,避免了数据拷贝带来的弊端。
根据本发明的实施例,提供了一种数据访问的实现方法。
如图1所示,根据本发明实施例的数据访问的实现方法包括
步骤S101,将需要访问的数据存储在缓冲区中;
步骤S103,由多个数据访问单元对缓冲区中的数据进行访问,其中,每个数据访问单元通过其对应的指针对该指针在缓冲区中所指向的数据进行访问,并在该数据访问单元每次访问之后更新指针所指向的位置。
其中,缓冲区可以包括多个数据队列,在将需要访问的数据存储在缓冲区中时,以不重复的方式将所有需要访问的数据存储至多个数据队列。
并且,由多个数据访问单元对缓冲区中的数据进行访问时,对于每个数据访问单元,该数据访问单元在每个数据队列均配置有指针,且对于每个数据队列,该数据访问单元在该队列中进行一次数据进行访问之后,更新该数据访问单元在该队列的指针所指向的位置。
该方法可以进一步包括在缓冲区中的所有需要访问的数据均被多个数据访问单元访问之后,删除缓冲区中保存的数据。
其中,对于每个数据访问单元,根据该数据访问单元所对应指针在缓冲区中所指向的位置,判断该数据访问单元是否访问了缓冲区中所有的数据。由于每个数据访问单元的指针位置更新都按照一定的策略进行,因此,根据一个数据访问单元指针的位置能够判断出该数据访问单元是否已经完成了对所有数据的访问。
本发明提出的方案可以应用于多种场景,例如,可以针对万兆网卡多发送队列的特点,为每个CPU核分配了一个网卡硬件描述符队列,并且分配相应的软件描述符队列,配置万兆网卡自动将报文发送到相应队列上去,数据访问单元此时可以是需要对所有数据进行访问的应用;
每个队列采用循环队列的数据结构,优选地,所采用的算法为无锁(lock-free) 算法,避免了加锁对性能的影响;
在每个软件描述符队列上,为每个应用程序分配各自自己的指针,各个应用程序通过自己的数据指针从共享缓冲区中取数据,并且更新指针位置;
在驱动内部,在每个队列中,驱动在释放每一个报文缓冲区时也将检查各个应用指针的位置,确保只有当所有在线应用都访问过这个数据之后才可以将整个缓冲区释放掉。
如图2所示,Intel万兆网卡中的缓冲区划分为四个队列,作为应用A和应用B的共享内存,四个队列中均配置有应用A的指针,从而使得应用A可以同时对四个队列中的数据进行访问;类似地,四个队列中均配置有应用B的指针,从而使得应用B可以同时对四个队列中的数据进行访问。
因此,在万兆网卡的零拷贝场景下,通过使用本发明,能够使得万兆网卡的零拷贝缓冲区支持多个应用的访问。
以上虽然列举了本发明应用的具体场景,但是并不用于限定本发明,所有需要由多个主体对全部数据进行访问的场合均可以采用本发明的方案进行数据的访问,从而简化访问的流程,避免访问降低系统的性能。
另外,在数据处理单元访问数据后,还可以由各个数据访问单元或其他模块对访问的数据进行处理,对于如何处理数据需要根据具体的情况而定,本文对此不进行描述。
根据本发明的实施例,提供了一种数据访问的实现装置。
如图3所示,根据本发明实施例的数据访问的实现装置包括
缓冲区31,用于存储需要访问的数据;
多个数据访问单元(出于清楚的目的,图3中仅示出了一个数据访问单元进行说明,在实际应用中,根据系统所支持的应用数量,可以配置多个数据访问单元)32,用于对缓冲区中的数据进行访问,其中,每个数据访问单元通过其对应的指针对该指针在缓冲区中所指向的数据进行访问,且该数据访问单元每次访问之后更新相应的指针所指向的位置。
其中,缓冲区被划分有多个数据队列,所有需要访问的数据以不重复的方式存储在多个数据队列中。
并且,对于每个数据访问单元,该数据访问单元在每个数据队列均配置有指针,且对于每个数据队列,该数据访问单元用于在该队列中进行一次数据进行访问之后,更新该数据访问单元在该队列的指针所指向的位置。
此外,该装置可以进一步包括
删除模块(未示出),连接至缓冲区31,用于在缓冲区中的所有需要访问的数据均被多个数据访问单元访问之后,删除缓冲区中保存的数据。
该装置还可以进一步包括
判断模块(32),连接至缓冲区31和删除模块,用于对每个数据访问单元,根据该数据访问单元所对应指针在缓冲区中所指向的位置,判断该数据访问单元是否访问了缓冲区中所有的数据,并在判断所有数据访问单元均访问了缓冲区中存储的所有数据的情况下,通知清除模块删除缓冲区中保存的数据。
综上所述,借助于本发明的上述技术方案,通过对多个数据访问单元设置指针,能够实现多个数据访问单元对缓冲区的并行访问,避免进行数据的拷贝,降低系统的负担,减少数据访问的时间,保证了系统的性能不被降低。例如,万兆网卡在零拷贝的基础上以多指针技术实现了对多个应用的支持,从而可以使每个应用都能获得所有网卡捕获的数据,并且在访问过程中没有数据的复制,因此完全没有性能损耗。并且,通过多队列的并行访问, 能够进一步提高访问的效率,使数据的访问更加合理地执行。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种数据访问的实现方法,其特征在于,包括将需要访问的数据存储在缓冲区中;由多个数据访问单元对所述缓冲区中的数据进行访问,其中,每个数据访问单元通过其对应的指针对该指针在缓冲区中所指向的数据进行访问,并在该数据访问单元每次访问之后更新指针所指向的位置。
2.根据权利要求1所述的实现方法,其特征在于,所述缓冲区包括多个数据队列,在将需要访问的数据存储在缓冲区中时,以不重复的方式将所有需要访问的数据存储至所述多个数据队列。
3.根据权利要求2所述的实现方法,其特征在于,由多个数据访问单元对所述缓冲区中的数据进行访问包括对于每个数据访问单元,该数据访问单元在每个数据队列均配置有指针,且对于每个数据队列,该数据访问单元在该队列中进行一次数据进行访问之后,更新该数据访问单元在该队列的指针所指向的位置。
4.根据权利要求1所述的实现方法,其特征在于,进一步包括在所述缓冲区中的所有需要访问的数据均被所述多个数据访问单元访问之后,删除所述缓冲区中保存的所述数据。
5.根据权利要求4所述的方法,其特征在于,对于每个数据访问单元,根据该数据访问单元所对应指针在所述缓冲区中所指向的位置,判断该数据访问单元是否访问了所述缓冲区中所有的数据。
6.一种数据访问的实现装置,其特征在于,包括缓冲区,用于存储需要访问的数据;多个数据访问单元,用于对所述缓冲区中的数据进行访问,其中,每个数据访问单元通过其对应的指针对该指针在所述缓冲区中所指向的数据进行访问,且该数据访问单元每次访问之后更新相应的指针所指向的位置。
7.根据权利要求6所述的实现装置,其特征在于,所述缓冲区被划分有多个数据队列, 所有需要访问的数据以不重复的方式存储在所述多个数据队列中。
8.根据权利要求7所述的实现方法,其特征在于,对于每个数据访问单元,该数据访问单元在每个数据队列均配置有指针,且对于每个数据队列,该数据访问单元用于在该队列中进行一次数据进行访问之后,更新该数据访问单元在该队列的指针所指向的位置。
9.根据权利要求6所述的实现装置,其特征在于,进一步包括删除模块,用于在所述缓冲区中的所有需要访问的数据均被所述多个数据访问单元访问之后,删除所述缓冲区中保存的所述数据。
10.根据权利要求9所述的实现装置,其特征在于,进一步包括判断模块,用于对每个数据访问单元,根据该数据访问单元所对应指针在所述缓冲区中所指向的位置,判断该数据访问单元是否访问了所述缓冲区中所有的数据,并在判断所有数据访问单元均访问了所述缓冲区中存储的所有数据的情况下,通知所述清除模块删除所述缓冲区中保存的所述数据。
全文摘要
本发明公开了一种数据访问的实现方法和装置,该方法包括将需要访问的数据存储在缓冲区中;由多个数据访问单元对缓冲区中的数据进行访问,其中,每个数据访问单元通过其对应的指针对该指针在缓冲区中所指向的数据进行访问,并在该数据访问单元每次访问之后更新指针所指向的位置。本发明通过对多个数据访问单元设置指针,能够实现多个数据访问单元对缓冲区的并行访问,避免进行数据的拷贝,降低系统的负担,减少数据访问的时间,保证了系统的性能不被降低。
文档编号G06F12/08GK102541773SQ201110455798
公开日2012年7月4日 申请日期2011年12月31日 优先权日2011年12月31日
发明者万伟, 刘兴彬, 刘铁, 孙一鸣, 曹振南, 朱春屹, 李云华, 李博文, 杨锦涛, 王泼, 王清, 范玉峰, 董建珊, 邵宗有, 陈科 申请人:曙光信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1