本发明专利技术涉及一种数据包的并发处理方法及设备,该方法包括:在地址池中采用至少两个单向空闲链表存储共享存储器的空闲地址,所述地址池用于存储共享存储器中所有的空闲地址;获取所述共享存储器的消息类型,并根据所述共享存储器中的消息类型建立对应的地址先进先出队列FIFO;在接收到要同时写入所述共享存储器的至少两个消息时,由所述至少两个单向空闲链表为所述至少两个消息分别提供写入共享存储器的空闲地址,并将分别与所述至少两个消息对应的所述地址更新到所述消息对应的地址FIFO中。本发明专利技术技术方案的实现,能够解决现有技术中无法实现共享存储器中对两个消息的同时读取和写入。
【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及计算机
,更具体的说,涉及一种数据包的并发处理方法及设备。
技术介绍
目前,在ASIC(Application Specific Integrated Circuit,特殊应用集成电路) 或者FPGA(Field-Programmable Gate Array,现场可编程门阵列)的设计中,经常需要处理各种各样协议规定的数据包,这些数据包通常具有两个共性一是数据包长度不同;二是不同数据包可以不按照一定顺序来处理。在硬件设计中,能否对这些协议数据包进行快速高效的处理,对系统的性能有很大影响。目前所有不同类型的数据包共享一个大的存储器,并针对不同的数据包建立各自对应的单向链表,将各自的消息类按按顺序串起来;同时建立一个地址池,所述地址池用于对共享存储器的地址进行维护,其中,用一个空闲链表将共享存储器中所有的空闲地址串起来,用于指示共享存储器中的空闲位置;其中,基于地址池对所有链表进行维护操作。当有消息要写入共享存储器时,首先从地址池中的空闲链表头取出一个空闲地址作为写入共享存储器的地址,并将此空闲地址写入到地址池中对应消息类的链表尾;当有消息要读出共享存储器时,首先从地址池中对应消息类的链表头取出一个消息地址作为读出共享缓冲器的地址,并将此地址写入到地址池中的空闲链表尾。在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题由于现有技术中所有链表的操作均是基于一个地址池作出的,由于地址池的端口有限,能够支持同时对地址池的双读双写,也就是说只能支持同时进行读取一个消息和写入一个消息的操作。当一个消息要写入共享存储器时,对地址池分别做一次读操作和写操作;当一个消息要读出共享存储器时,也会分别对地址池做一次读操作和写操作,因此,现有方案无法实现共享存储器中同时读取两个消息和写入两个消息,消息的读写速度受到极大的限制,从而影响系统的性能。
技术实现思路
本专利技术的目的是提供一种数据包的并发处理方法及设备,通过提高数据包的读写速度来提升系统性能。本专利技术实施例一方面提供了一种数据包的并发处理方法,包括在地址池中采用至少两个单向空闲链表存储共享存储器的空闲地址,所述地址池用于存储共享存储器中所有的空闲地址;获取所述共享存储器的消息类型,并根据所述共享存储器中的消息类型建立对应的地址先进先出队列FIFO;在接收到要同时写入所述共享存储器的至少两个消息时,由所述至少两个单向空闲链表为所述至少两个消息分别提供写入共享存储器的空闲地址,并将分别与所述至少两个消息对应的所述地址更新到所述消息对应的地址FIFO中。本专利技术实施例另一方面提供了一种数据包的并发处理设备,包括配置处理模块,用于采用至少两个单向空闲链表存储共享存储器的空闲地址,所述地址池用于存储共享存储器中所有的空闲地址;获取所述共享存储器的消息类型,并根据所述共享存储器中的消息类型建立对应的地址先进先出队列FIFO ;消息控制模块,用于在接收到要同时写入所述共享存储器的至少两个消息时,由所述配置处理模块配置的所述至少两个单向空闲链表为所述至少两个消息分别提供写入共享存储器的空闲地址,并将分别与所述至少两个消息对应的所述地址更新到所述消息对应的所述配置处理模块建立的所述地址FIFO中。由上述本专利技术的实施例提供的技术方案可以看出,通过在地址池中采用至少两个单向空闲链表存储共享存储器的空闲地址;并针对所述共享存储器中的消息类型建立对应的地址先进先出队列FIFO ;在接收到要同时写入所述共享存储器的至少两个消息时,两个单向空闲链表可以分别向两个消息提供写入共享存储器的地址,并将每个消息的写入地址更新到对应的地址FIFO中,解决了现有方案中只能支持同时读取和写入一个消息的技术问题,实现了共享存储器中对两个消息的同时读取和写入,能够提高消息的读写速度,从而有利于进一步提高系统的性能。附图说明图1为本专利技术实施例一种数据包的并发处理方法流程图;图2为本专利技术实施例的一种应用场景图;图3为本专利技术实施例的另一种应用场景图;图4为本专利技术实施例一种数据包的并发处理设备结构示意图。具体实施例方式本专利技术实施例提出了基于链表和FIF0(Fisrt In First Out,先进先出队列)管理地址的一种数据包的并发处理方法及设备,具体是采用一个共享存储器缓存不同类型、不同长度的数据包,采用地址池中至少两个单向空闲链表和多个地址FIFO,对共享存储器中消息的读出和写入过程进行精确控制,实现了共享存储器中对至少两个消息的同时读出和写入。为了便于理解本专利技术的技术方案,下面结合具体实施例和附图对本专利技术的技术方案进一步说明。如图1所示,本专利技术实施例提出了一种数据包的并发处理方法,技术方案包括101、在地址池中采用至少两个单向空闲链表存储共享存储器的空闲地址,所述地址池用于存储共享存储器中所有的空闲地址;102、获取所述共享存储器的消息类型,并根据所述共享存储器中的消息类型建立对应的地址先进先出队列FIFO ;103、在接收到要同时写入所述共享存储器的至少两个消息时,由所述至少两个单向空闲链表为所述至少两个消息分别提供写入共享存储器的空闲地址,并将分别与所述至少两个消息对应的所述地址更新到所述消息对应的地址FIFO中。在本专利技术的一个可选实施例中,所述方法还可以包括在接收到要同时读出所述共享存储器的至少两个消息时,分别从所述至少两个消息对应的地址FIFO中取出所述消息的地址,作为所述消息读出所述共享存储器的地址,并分别将与所述至少两个消息对应的读出所述共享存储器的地址更新到所述至少两个单向空闲链表中。具体的说,如图2所示为本专利技术实施例所述方法的应用场景图如图所示,共享存储器是一个大的双端口缓冲存储器(buffer),用来存储不同类型、不同长度的数据包;其中,two free^hains为本专利技术实施例所述的两个单向空闲链表; MsgO Addr FIFO. . . MsgN Addr FIFO为本专利技术实施例所述的分别针对不同消息类型建立的地址先进先出队列FIFO,用于分别存储该类型在共享存储器中的消息地址。Addr Pool为地址池,本专利技术实施例所述地址池与
技术介绍
部分所述地址池不同,本专利技术实施例中所述地址池用于存储共享存储器中所有的空闲地址,并采用两个单向空闲链表(twofree^hains)来存储所述空闲地址;地址池是一个双端口缓冲存储器 (buffer);在上述步骤101之前,所述方法还可以包括建立至少两个单向空闲链表,其中,每个链表都具有头指针(HeadPtr)和尾指针 (TailPtr);所述单向空闲链表包括两部分内容,一部分是共享存储器的空闲地址,如图 twofree_chains中右部分;另一部分是用于指向下一个可用空闲地址的指针部分,如图 twofree_chains中左部分;将头指针和尾指针分别指向所述单向空闲链表的头和尾。通过上述这种单向空闲链表的形式,可以把共享存储器中所有的空闲地址链接起来。需要说明的是,本专利技术实施例中两个单向空闲链表,通常采用将共享存储器中的所有空闲地址均分的方式存储所述空闲地址。在本专利技术的一个可选实施例中,在接收到要同时写入所述共享存储器的至少两个消息时,步骤103的具体过程包括分别从所述至少两个单向空闲链表的表头中取出空闲地址,作为所述至少两个消息本文档来自技高网...
【技术保护点】
【技术特征摘要】
【国外来华专利技术】
【专利技术属性】
技术研发人员:王工艺,侯新宇,常胜,杨宝川,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。