CN102395958B - 一种数据包的并发处理方法及设备 - Google Patents

一种数据包的并发处理方法及设备 Download PDF

Info

Publication number
CN102395958B
CN102395958B CN201180001485.0A CN201180001485A CN102395958B CN 102395958 B CN102395958 B CN 102395958B CN 201180001485 A CN201180001485 A CN 201180001485A CN 102395958 B CN102395958 B CN 102395958B
Authority
CN
China
Prior art keywords
message
address
shared storage
idle
unidirectional
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201180001485.0A
Other languages
English (en)
Other versions
CN102395958A (zh
Inventor
王工艺
侯新宇
常胜
杨宝川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
XFusion Digital Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN102395958A publication Critical patent/CN102395958A/zh
Application granted granted Critical
Publication of CN102395958B publication Critical patent/CN102395958B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Abstract

本发明涉及一种数据包的并发处理方法及设备,该方法包括:在地址池中采用至少两个单向空闲链表存储共享存储器的空闲地址,所述地址池用于存储共享存储器中所有的空闲地址;获取所述共享存储器的消息类型,并根据所述共享存储器中的消息类型建立对应的地址先进先出队列FIFO;在接收到要同时写入所述共享存储器的至少两个消息时,由所述至少两个单向空闲链表为所述至少两个消息分别提供写入共享存储器的空闲地址,并将分别与所述至少两个消息对应的所述地址更新到所述消息对应的地址FIFO中。本发明技术方案的实现,能够解决现有技术中无法实现共享存储器中对两个消息的同时读取和写入。

Description

一种数据包的并发处理方法及设备
技术领域
本发明涉及计算机技术领域,更具体的说,涉及一种数据包的并发处理方法及设备。
背景技术
目前,在ASIC(Application Specific Integrated Circuit,特殊应用集成电路)或者FPGA(Field-Programmable Gate Array,现场可编程门阵列)的设计中,经常需要处理各种各样协议规定的数据包,这些数据包通常具有两个共性:一是数据包长度不同;二是不同数据包可以不按照一定顺序来处理。
在硬件设计中,能否对这些协议数据包进行快速高效的处理,对系统的性能有很大影响。
目前:所有不同类型的数据包共享一个大的存储器,并针对不同的数据包建立各自对应的单向链表,将各自的消息类按按顺序串起来;同时建立一个地址池,所述地址池用于对共享存储器的地址进行维护,其中,用一个空闲链表将共享存储器中所有的空闲地址串起来,用于指示共享存储器中的空闲位置;其中,基于地址池对所有链表进行维护操作。
当有消息要写入共享存储器时,首先从地址池中的空闲链表头取出一个空闲地址作为写入共享存储器的地址,并将此空闲地址写入到地址池中对应消息类的链表尾;当有消息要读出共享存储器时,首先从地址池中对应消息类的链表头取出一个消息地址作为读出共享缓冲器的地址,并将此地址写入到地址池中的空闲链表尾。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
由于现有技术中所有链表的操作均是基于一个地址池作出的,由于地址池的端口有限,能够支持同时对地址池的双读双写,也就是说只能支持同时进行读取一个消息和写入一个消息的操作。当一个消息要写入共享存储器时,对地址池分别做一次读操作和写操作;当一个消息要读出共享存储器时,也会分别对地址池做一次读操作和写操作,因此,现有方案无法实现共享存储器中同时读取两个消息和写入两个消息,消息的读写速度受到极大的限制,从而影响系统的性能。
发明内容
本发明的目的是提供一种数据包的并发处理方法及设备,通过提高数据包的读写速度来提升系统性能。
本发明实施例一方面提供了一种数据包的并发处理方法,包括:
在地址池中采用至少两个单向空闲链表存储共享存储器的空闲地址,所述地址池用于存储共享存储器中所有的空闲地址;
获取所述共享存储器的消息类型,并根据所述共享存储器中的消息类型建立对应的地址先进先出队列FIFO;
在接收到要同时写入所述共享存储器的至少两个消息时,由所述至少两个单向空闲链表为所述至少两个消息分别提供写入共享存储器的空闲地址,并将分别与所述至少两个消息对应的所述地址更新到所述消息对应的地址FIFO中。
本发明实施例另一方面提供了一种数据包的并发处理设备,包括:
配置处理模块,用于采用至少两个单向空闲链表存储共享存储器的空闲地址,所述地址池用于存储共享存储器中所有的空闲地址;获取所述共享存储器的消息类型,并根据所述共享存储器中的消息类型建立对应的地址先进先出队列FIFO;
消息控制模块,用于在接收到要同时写入所述共享存储器的至少两个消息时,由所述配置处理模块配置的所述至少两个单向空闲链表为所述至少两个消息分别提供写入共享存储器的空闲地址,并将分别与所述至少两个消息对应的所述地址更新到所述消息对应的所述配置处理模块建立的所述地址FIFO中。
由上述本发明的实施例提供的技术方案可以看出,通过在地址池中采用至少两个单向空闲链表存储共享存储器的空闲地址;并针对所述共享存储器中的消息类型建立对应的地址先进先出队列FIFO;在接收到要同时写入所述共享存储器的至少两个消息时,两个单向空闲链表可以分别向两个消息提供写入共享存储器的地址,并将每个消息的写入地址更新到对应的地址FIFO中,解决了现有方案中只能支持同时读取和写入一个消息的技术问题,实现了共享存储器中对两个消息的同时读取和写入,能够提高消息的读写速度,从而有利于进一步提高系统的性能。
附图说明
图1为本发明实施例一种数据包的并发处理方法流程图;
图2为本发明实施例的一种应用场景图;
图3为本发明实施例的另一种应用场景图;
图4为本发明实施例一种数据包的并发处理设备结构示意图。
具体实施方式
本发明实施例提出了基于链表和FIFO(Fisrt In First Out,先进先出队列)管理地址的一种数据包的并发处理方法及设备,具体是采用一个共享存储器缓存不同类型、不同长度的数据包,采用地址池中至少两个单向空闲链表和多个地址FIFO,对共享存储器中消息的读出和写入过程进行精确控制,实现了共享存储器中对至少两个消息的同时读出和写入。
为了便于理解本发明的技术方案,下面结合具体实施例和附图对本发明的技术方案进一步说明。
如图1所示,本发明实施例提出了一种数据包的并发处理方法,技术方案包括:
101、在地址池中采用至少两个单向空闲链表存储共享存储器的空闲地址,所述地址池用于存储共享存储器中所有的空闲地址;
102、获取所述共享存储器的消息类型,并根据所述共享存储器中的消息类型建立对应的地址先进先出队列FIFO;
103、在接收到要同时写入所述共享存储器的至少两个消息时,由所述至少两个单向空闲链表为所述至少两个消息分别提供写入共享存储器的空闲地址,并将分别与所述至少两个消息对应的所述地址更新到所述消息对应的地址FIFO中。
在本发明的一个可选实施例中,所述方法还可以包括:
在接收到要同时读出所述共享存储器的至少两个消息时,分别从所述至少两个消息对应的地址FIFO中取出所述消息的地址,作为所述消息读出所述共享存储器的地址,并分别将与所述至少两个消息对应的读出所述共享存储器的地址更新到所述至少两个单向空闲链表中。
具体的说,如图2所示为本发明实施例所述方法的应用场景图:
如图所示,共享存储器是一个大的双端口缓冲存储器(buffer),用来存储不同类型、不同长度的数据包;其中,two free_chains为本发明实施例所述的两个单向空闲链表;Msg0 Addr FIFO...MsgN Addr FIFO为本发明实施例所述的分别针对不同消息类型建立的地址先进先出队列FIFO,用于分别存储该类型在共享存储器中的消息地址。
Addr Pool为地址池,本发明实施例所述地址池与背景技术部分所述地址池不同,本发明实施例中所述地址池用于存储共享存储器中所有的空闲地址,并采用两个单向空闲链表(twofree_chains)来存储所述空闲地址;地址池是一个双端口缓冲存储器(buffer);
在上述步骤101之前,所述方法还可以包括:
建立至少两个单向空闲链表,其中,每个链表都具有头指针(HeadPtr)和尾指针(TailPtr);
所述单向空闲链表包括两部分内容,一部分是共享存储器的空闲地址,如图twofree_chains中右部分;另一部分是用于指向下一个可用空闲地址的指针部分,如图twofree_chains中左部分;将头指针和尾指针分别指向所述单向空闲链表的头和尾。
通过上述这种单向空闲链表的形式,可以把共享存储器中所有的空闲地址链接起来。
需要说明的是,本发明实施例中两个单向空闲链表,通常采用将共享存储器中的所有空闲地址均分的方式存储所述空闲地址。
在本发明的一个可选实施例中,在接收到要同时写入所述共享存储器的至少两个消息时,步骤103的具体过程包括:
分别从所述至少两个单向空闲链表的表头中取出空闲地址,作为所述至少两个消息写入共享存储器的空闲地址;
分别将与所述至少两个消息对应的所述地址,写入到与所述消息对应的地址FIFO的表尾。
具体的说,图2所示,在接收到要同时写入共享存储器中的两种不同类型的消息(Msg in0和Msg in1)时,分别从两个单向空闲链表的表头中取出一个空闲地址,作为写入共享存储器的空闲地址(WrAddr_a和WrAddr_b);
并将所述写入共享存储器的空闲地址,分别写入到与所述消息对应的地址FIFO(Msg0 Addr FIFO和Msg1 Addr FIFO)的表尾。
通过上述实现方式,不仅实现了两个消息同时写入共享存储器中的发明目的,同时也实现了共享存储器中对于两种不同类型消息的同时写入。
在本发明的一个可选实施例中,在接收到要同时读出所述共享存储器的至少两个消息时,所述步骤包括:
分别从与所述至少两个消息对应的地址FIFO的表头中取出所述消息的地址,作为所述消息读出所述共享存储器的地址;
分别将与所述至少两个消息对应的读出所述共享存储器的地址,分别更新到两个空闲链表的表尾。
具体的说,图2所示,在接收到要同时读出共享存储器的至少两种不同类型的消息(Msg Out0和Msg Out1)时,从两个消息对应的地址FIFO(Msg0Addr FIFO和Msg1 Addr FIFO)的表头中,分别取出所述消息的地址(RdAddr_a和RdAddr_b),作为该消息读出共享存储器的地址;
并将所述消息读出共享存储器的地址(RdAddr_a和RdAddr_b),分别更新到地址池中两个空闲链表尾部。
可选的,所述方法还包括:
所述至少两个单向空闲链表之间可动态平衡长度,进一步包括:
在接收到要写入共享存储器中的一个消息时,根据所述单向空闲链表的长度选择较长的单向空闲链表提供所述消息写入共享存储器的空闲地址;
在接收到要读出共享存储器中的一个消息时,从所述消息对应的地址FIFO中取出所述消息的地址,并根据所述单向空闲链表的长度选择较短的单向空闲链表,将所述读出共享存储器的地址更新到所述单向空闲链表中。
本发明实施例解决了现有技术中,由于建立的所有链表都是基于一个地址池做读出和写入操作,地址池的端口为双端口,只可以支持同时双读双写;因此当一个消息写入共享存储器时,会对地址池分别做一次读操作(从一个空闲链表中读取一个空闲地址作为写入共享存储器的地址)和写操作(将该写入共享存储器的地址写入到地址池中对应消息类的链表尾);当一个消息读出时,也会对地址池做一次读操作(从地址池中对应消息类的链表中取出该消息的地址作为读出共享存储器的地址)和写操作(将读出共享存储器的地址写入到地址池中的空闲链表中);这样当有一个消息写入,一个消息读出时,已经对地址池做出了两次读操作和写操作,因此也就不能满足同时读取两个消息和同时写入两个消息的需求了。
本发明实施例中由于针对不同消息类型建立了对应的地址FIFO,并在地址池中配置了两个单向空闲链表,当接收到有两条消息要写入共享存储器的指令时,从地址池中两个空闲链表中分别读出一个空闲地址,并将读出的空闲地址分别写入与该消息对应的地址FIFO中,在两条消息要同时写入共享存储器的场景下,对地址池只做出了两次读操作,因此,在两条消息同时写入共享存储器的场景下,还可以提供两条消息同时读出共享存储器的功能,从而解决现有技术存在不能实现同时读取两个消息和同时写入两个消息的的技术问题。
如图3所示,以Intel QPI 1.1协议为例,对本发明实施例的技术方案的实现过程进行说明:
Intel QPI 1.1协议中定义有6种消息类型,分别是SNP(snoop,监听),HOM(home,本地),DRS(data response,数据返回),NDR(none dataresponse,无数据返回),NCB(none coherence bypass,非一致性旁路)和NCS(none coherence standard,非一致性标准);其中,SNP,HOM和NDR的长度为1个flit(一个flit是80bit);DRS和NCB的长度为9~11个flit;NCS的长度为1~3个flit;共享缓冲器的位宽为80bit的双端口RAM;
系统初始化时,在地址池中建立至少两个单向空闲链表(twofree_chains)来存储共享存储器中的空闲地址;其中,每个链表都具有头指针(HeadPtr)和尾指针(TailPtr);所述单向空闲链表包括共享存储器的空闲地址以及用于指向下一个可用空闲地址的指针部分;并将头指针和尾指针分别指向所述单向空闲链表的头和尾;具体如图3所示;
针对所述共享存储器中的消息类型建立对应的地址先进先出队列FIFO;具体的,建立与消息类型SNP,HOM,DRS,NDR,NCB和NCS对应的地址FIFO,具体如图3所示;
当接收到要同时写入共享存储器的SNP和DRS两种不同类型的消息时,SNP的消息从channel_in_a通道写入,DRS的消息从channel_in_b通道写入;地址池中两个空闲链表分别提供一个空闲地址作为SNP和DRS消息的写入共享存储器的地址,并将该地址分别写入到与SNP和DRS对应的地址FIFO中;
其中,因为SNP消息的长度为1个flit,则空闲链表只需提供一个空闲地址即可满足写入要求,而DRS消息的长度为9~11个flit,空闲链表需要连续给出空闲地址直到DRS消息全部写入共享存储器中;在SNP消息写入完成时,而DRS消息还在写入的过程中,这时channel_in_a通道空闲,可以应用此通道继续写入其他类型的消息;
当接收到要同时读出共享存储器的NDR和HOM两种不同类型的消息时,NDR的消息从channel_out_a通道读出,HOM的消息从channel_out_b通道读出;
NDR消息和HOM消息对应的地址FIFO分别给出该消息的地址作为读出共享存储器的地址,因为NDR消息和HOM消息的长度都为1个flit,则NDR消息和HOM消息对应的地址FIFO只需要给出一个消息地址即可满足读取要求,并将该消息地址写入到地址池中的两个空闲链表的尾部,从而完成N DR和HOM两种不同类型消息在共享存储器中的同时读出。
如图4所示,本发明实施例还提出了一种数据包的并发处理设备,通过如下模块实现:
配置处理模块41,用于采用至少两个单向空闲链表存储共享存储器的空闲地址,所述地址池用于存储共享存储器中所有的空闲地址;获取所述共享存储器的消息类型,并根据所述共享存储器中的消息类型建立对应的地址先进先出队列FIFO;
消息控制模块42,用于在接收到要同时写入所述共享存储器的至少两个消息时,由所述配置处理模块配置的所述至少两个单向空闲链表为所述至少两个消息分别提供写入共享存储器的空闲地址,并将分别与所述至少两个消息对应的所述地址更新到所述消息对应的所述配置处理模块建立的所述地址FIFO中。
在本发明的一个可选实施例中,所述消息控制模42块还用于:
在接收到要同时读出所述共享存储器的至少两个消息时,分别从与所述至少两个消息对应的地址FIFO中取出所述消息的地址,作为所述消息读出所述共享存储器的地址,并分别将与所述至少两个消息对应的读出所述共享存储器的地址更新到所述至少两个单向空闲链表中。
在本发明的一个可选实施例中,所述配置处理模块41具体用于:
建立至少两个单向空闲链表;所述单向空闲链表包括共享存储器的空闲地址以及指向下一个可用空闲地址的指针部分;
将头指针和尾指针分别指向所述单向空闲链表的头和尾。
在本发明的一个可选实施例中,所述消息控制模块42具体用于:
在接收到要同时写入所述共享存储器的至少两个消息时,分别从所述至少两个单向空闲链表的表头中取出空闲地址,作为所述至少两个消息写入共享存储器的空闲地址;
分别将与所述至少两个消息对应的所述地址,写入到与所述消息对应的地址FIFO的表尾;
在接收到要同时读出所述共享存储器的至少两个消息时,分别从与所述至少两个消息对应的地址FIFO的表头中取出所述消息的地址,作为所述消息读出所述共享存储器的地址;
分别将与所述至少两个消息对应的读出所述共享存储器的地址,分别更新到两个空闲链表的表尾。
在本发明的一个可选实施例中,所述消息控制模块还用于:
在接收到要写入共享存储器中的一个消息时,根据所述单向空闲链表的长度选择较长的单向空闲链表提供所述消息写入共享存储器的空闲地址;
在接收到要读出共享存储器中的一个消息时,从所述消息对应的地址FIFO中取出所述消息的地址,并根据所述单向空闲链表的长度选择较短的单向空闲链表,将所述读出共享存储器的地址更新到所述单向空闲链表中。
在本发明的一个可选实施例中,所述设备适用于不同消息类型下,对两个消息的同时读取和写入,还适用于相同消息类型下,一个消息的同时读取和写入共享存储器的应用场景。
需要说明的是,本发明实施例一种数据包的并发处理设备是根据图1所示的方法实施例直接获得的,包含与所述图1方法实施例相同的技术特征,其中,本发明实施例中各功能模块实现的方案与图1方法实施例中各步骤记载的技术方案对应,具体请参见图1实施例中的描述,在此不做赘述。
综上所述,本发明实施例实现了共享存储器中两个消息的同时读出与写入,不仅适用于,也适用于两个不同类型消息的应用场景,还适用于一个消息的同时读取和写入共享存储器的应用场景。本发明实施例可应用在各种不同类型、不同长度数据包的存储设计中,不仅可以对数据包实现乱序并发的读写,也可按顺序读写;不仅仅可在ASIC或FPGA实现时使用,在其他资源比较紧张的情况下也比较实用,可提高资源利用率和系统性能,尤其是在数据包长度相差较大的情况下。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

Claims (12)

1.一种数据包的并发处理方法,其特征在于,包括:
在地址池中采用至少两个单向空闲链表存储共享存储器的空闲地址,所述地址池用于存储共享存储器中所有的空闲地址;
获取所述共享存储器的消息类型,并根据所述共享存储器中的消息类型建立对应的地址先进先出队列FIFO;
在接收到要同时写入所述共享存储器的至少两个消息时,由所述至少两个单向空闲链表为所述至少两个消息分别提供写入共享存储器的空闲地址,并将分别与所述至少两个消息对应的所述地址更新到所述消息对应的地址FIFO中;
其中,所述在接收到要同时写入所述共享存储器的至少两个消息时,由所述至少两个单向空闲链表为所述至少两个消息分别提供写入共享存储器的空闲地址,并将分别与所述至少两个消息对应的所述地址更新到所述消息对应的地址FIFO中,包括:
分别从所述至少两个单向空闲链表的表头中取出空闲地址,作为所述至少两个消息写入共享存储器的空闲地址;
分别将与所述至少两个消息对应的所述地址,写入到与所述消息对应的地址FIFO的表尾。
2.根据权利要求1所述的处理方法,其特征在于,所述方法还包括:
在接收到要同时读出所述共享存储器的至少两个消息时,分别从与所述至少两个消息对应的地址FIFO中取出所述消息的地址,作为所述消息读出所述共享存储器的地址,并分别将与所述至少两个消息对应的读出所述共享存储器的地址更新到所述至少两个单向空闲链表中。
3.根据权利要求2所述的处理方法,其特征在于,所述方法还包括:
建立至少两个单向空闲链表;所述单向空闲链表包括共享存储器中的空闲地址以及指向下一个可用空闲地址的指针部分;
将头指针和尾指针分别指向所述单向空闲链表的头和尾。
4.根据权利要求3所述的处理方法,其特征在于,在接收到要同时读出所述共享存储器的至少两个消息时,分别从与所述至少两个消息对应的地址FIFO中取出所述消息的地址,作为所述消息读出所述共享存储器的地址,并分别将与所述至少两个消息对应的读出所述共享存储器的地址更新到所述至少两个单向空闲链表中,包括:
分别从与所述至少两个消息对应的地址FIFO的表头中取出所述消息的地址,作为所述消息读出所述共享存储器的地址;
分别将与所述至少两个消息对应的读出所述共享存储器的地址,分别更新到两个空闲链表的表尾。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述至少两个单向空闲链表之间动态平衡长度;进一步包括:
在接收到要写入共享存储器中的一个消息时,根据所述单向空闲链表的长度选择较长的单向空闲链表提供所述消息写入共享存储器的空闲地址;
在接收到要读出共享存储器中的一个消息时,从所述消息对应的地址FIFO中取出所述消息的地址,并根据所述单向空闲链表的长度选择较短的单向空闲链表,将所述读出共享存储器的地址更新到所述单向空闲链表中。
6.根据权利要求1-5中任一所述的处理方法,其特征在于,所述方法适用于不同消息类型下,对两个消息的同时读取和写入;以及,相同消息类型下,一个消息的同时读取和写入。
7.一种数据包的并发处理设备,其特征在于,包括:
配置处理模块,用于采用至少两个单向空闲链表存储共享存储器的空闲地址,所述地址池用于存储共享存储器中所有的空闲地址;获取所述共享存储器的消息类型,并根据所述共享存储器中的消息类型建立对应的地址先进先出队列FIFO;
消息控制模块,用于在接收到要同时写入所述共享存储器的至少两个消息时,由所述配置处理模块配置的所述至少两个单向空闲链表为所述至少两个消息分别提供写入共享存储器的空闲地址,并将分别与所述至少两个消息对应的所述地址更新到所述消息对应的所述配置处理模块建立的所述地址FIFO中;
其中,所述消息控制模块用于在接收到要同时写入所述共享存储器的至少两个消息时,由所述配置处理模块配置的所述至少两个单向空闲链表为所述至少两个消息分别提供写入共享存储器的空闲地址,并将分别与所述至少两个消息对应的所述地址更新到所述消息对应的所述配置处理模块建立的所述地址FIFO中,具体用于:
在接收到要同时写入所述共享存储器的至少两个消息时,分别从所述至少两个单向空闲链表的表头中取出空闲地址,作为所述至少两个消息写入共享存储器的空闲地址;
分别将与所述至少两个消息对应的所述地址,写入到与所述消息对应的地址FIFO的表尾。
8.根据权利要求7所述的处理设备,其特征在于,所述消息控制模块还用于:
在接收到要同时读出所述共享存储器的至少两个消息时,分别从与所述至少两个消息对应的地址FIFO中取出所述消息的地址,作为所述消息读出所述共享存储器的地址,并分别将与所述至少两个消息对应的读出所述共享存储器的地址更新到所述至少两个单向空闲链表中。
9.根据权利要求8所述的处理设备,其特征在于,所述配置处理模块具体用于:
建立至少两个单向空闲链表;所述单向空闲链表包括共享存储器的空闲地址以及指向下一个可用空闲地址的指针部分;
将头指针和尾指针分别指向所述单向空闲链表的头和尾。
10.根据权利要求9所述的处理设备,其特征在于,所述消息控制模块具体用于:
在接收到要同时读出所述共享存储器的至少两个消息时,分别从与所述至少两个消息对应的地址FIFO的表头中取出所述消息的地址,作为所述消息读出所述共享存储器的地址;
分别将与所述至少两个消息对应的读出所述共享存储器的地址,分别更新到两个空闲链表的表尾。
11.根据权利要求8所述的处理设备,其特征在于,所述消息控制模块还用于:
在接收到要写入共享存储器中的一个消息时,根据所述单向空闲链表的长度选择较长的单向空闲链表提供所述消息写入共享存储器的空闲地址;
在接收到要读出共享存储器中的一个消息时,从所述消息对应的地址FIFO中取出所述消息的地址,并根据所述单向空闲链表的长度选择较短的单向空闲链表,将所述读出共享存储器的地址更新到所述单向空闲链表中。
12.根据权利要求7-11中任一所述的处理设备,其特征在于,所述设备适用于不同消息类型下,对两个消息的同时读取和写入;以及,相同消息类型下,一个消息的同时读取和写入。
CN201180001485.0A 2011-08-26 2011-08-26 一种数据包的并发处理方法及设备 Active CN102395958B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2011/078987 WO2012119420A1 (zh) 2011-08-26 2011-08-26 一种数据包的并发处理方法及设备

Publications (2)

Publication Number Publication Date
CN102395958A CN102395958A (zh) 2012-03-28
CN102395958B true CN102395958B (zh) 2014-03-26

Family

ID=45862465

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180001485.0A Active CN102395958B (zh) 2011-08-26 2011-08-26 一种数据包的并发处理方法及设备

Country Status (2)

Country Link
CN (1) CN102395958B (zh)
WO (1) WO2012119420A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103902471B (zh) * 2012-12-28 2017-08-25 华为技术有限公司 数据缓存处理方法和装置
CN103218305B (zh) * 2013-05-10 2016-08-17 曙光信息产业(北京)有限公司 存储空间的分配方法
CN104378400B (zh) * 2013-08-15 2018-10-02 腾讯科技(深圳)有限公司 数据分散并发方法和装置
CN104935530B (zh) * 2015-04-29 2017-12-19 浪潮电子信息产业股份有限公司 一种计算机间数据交换的方法、交换机和系统
CN106681847B (zh) * 2016-12-30 2020-08-11 深圳Tcl数字技术有限公司 基于Android系统的消息处理方法及装置
CN107888512B (zh) * 2017-10-20 2021-08-03 常州楠菲微电子有限公司 动态共享缓冲存储器及交换机
CN108804571B (zh) * 2018-05-23 2021-11-05 湖南博匠信息科技有限公司 一种数据存储方法、装置以及设备
CN109640197B (zh) * 2018-12-04 2021-12-07 中国航空工业集团公司西安航空计算技术研究所 一种基于缓冲区共享的fc通信实现方法
CN109741385A (zh) * 2018-12-24 2019-05-10 浙江大华技术股份有限公司 一种图像处理系统、方法、装置、电子设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101551736A (zh) * 2009-05-20 2009-10-07 杭州华三通信技术有限公司 基于地址指针链表的缓存管理装置和方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08221371A (ja) * 1995-02-15 1996-08-30 Oki Electric Ind Co Ltd 共有メモリ制御方法とその制御回路
US20060190689A1 (en) * 2003-03-25 2006-08-24 Koninklijke Philips Electronics N.V. Method of addressing data in a shared memory by means of an offset
US7555579B2 (en) * 2004-05-21 2009-06-30 Nortel Networks Limited Implementing FIFOs in shared memory using linked lists and interleaved linked lists

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101551736A (zh) * 2009-05-20 2009-10-07 杭州华三通信技术有限公司 基于地址指针链表的缓存管理装置和方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JP特开平8-221371A 1996.08.30

Also Published As

Publication number Publication date
CN102395958A (zh) 2012-03-28
WO2012119420A1 (zh) 2012-09-13

Similar Documents

Publication Publication Date Title
CN102395958B (zh) 一种数据包的并发处理方法及设备
CN104407809B (zh) 多通道fifo缓冲器的控制方法
US8930593B2 (en) Method for setting parameters and determining latency in a chained device system
JP7162102B2 (ja) メモリアクセス技術およびコンピュータシステム
US8230180B2 (en) Shared memory burst communications
CN102684976B (zh) 一种基于ddr sdram进行数据读写的方法、装置及系统
CN101324869B (zh) 一种基于axi总线的多路复用器
CN106537858B (zh) 一种队列管理的方法和装置
CN103714038A (zh) 一种数据处理方法和装置
CN102437929A (zh) 队列管理中的数据出队方法及装置
CN109564502B (zh) 应用于存储设备中的访问请求的处理方法和装置
JP7074839B2 (ja) パケット処理
CN106254270A (zh) 一种队列管理方法及装置
CN113590512A (zh) 可直连外设设备的自启动dma装置及应用
CN111181874B (zh) 一种报文处理方法、装置及存储介质
CN105516023A (zh) 一种报文转发方法和装置
CN103106177B (zh) 多核网络处理器的片上互联结构及其方法
CN115904259B (zh) 非易失性存储器标准NVMe指令的处理方法及相关装置
CN106372013B (zh) 远程内存访问方法、装置和系统
CN110096456A (zh) 一种高速率大容量缓存方法与装置
US20110283068A1 (en) Memory access apparatus and method
CN102932265A (zh) 数据缓存管理装置和方法
CN117499351A (zh) 报文转发装置及方法、通信芯片及网络设备
WO2022027172A1 (zh) 数据处理装置、方法和系统以及神经网络加速器
CN111654886A (zh) 一种限制用户带宽的方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20211222

Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province

Patentee after: Super fusion Digital Technology Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.