首页> 中国专利> 异态性数据的并行处理方法和处理装置

异态性数据的并行处理方法和处理装置

摘要

本发明公开了一种异态性数据的并行处理方法和处理装置。该方法包括:接收到涉及共享资源独占性访问的数据的任一处理器将该数据输出到指定的缓存队列中;对该指定的缓存队列中的数据按照排队或限速的方式重新输入该多处理器,使同时至多一个处理器对其进行接收和处理。该装置包括与多处理器连接的、包括缓存队列和发送模块的缓存单元,缓存队列用于缓存任一处理器发送的涉及共享资源独占性访问的数据,发送模块用于将缓存队列中的数据按照排队或限速的方式执行重新输入,使同时至多一个处理器对其进行接收和处理。本发明避免了共享资源的竞争,保证了并行处理的性能且易于实现。

著录项

  • 公开/公告号CN101276294A

    专利类型发明专利

  • 公开/公告日2008-10-01

    原文格式PDF

  • 申请/专利权人 杭州华三通信技术有限公司;

    申请/专利号CN200810097906.4

  • 发明设计人 卢胜文;

    申请日2008-05-16

  • 分类号G06F9/50(20060101);H04L29/08(20060101);

  • 代理机构72003 隆天国际知识产权代理有限公司;

  • 代理人郭晓东

  • 地址 310053 浙江省杭州市高新技术产业开发区之江科技工业园六和路310号华为杭州生产基地

  • 入库时间 2023-12-17 20:45:19

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-08-25

    专利权的转移 IPC(主分类):G06F 9/50 专利号:ZL2008100979064 登记生效日:20230810 变更事项:专利权人 变更前权利人:新华三技术有限公司 变更后权利人:北京紫光通信科技集团有限公司 变更事项:地址 变更前权利人:310052 浙江省杭州市滨江区长河路466号 变更后权利人:100088 北京市海淀区知春路7号致真大厦B座24层

    专利申请权、专利权的转移

  • 2017-05-17

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F9/50 变更前: 变更后: 申请日:20080516

    专利权人的姓名或者名称、地址的变更

  • 2010-10-13

    授权

    授权

  • 2008-12-24

    实质审查的生效

    实质审查的生效

  • 2008-10-01

    公开

    公开

说明书

技术领域

本发明涉及数据处理技术领域,尤其涉及一种异态性数据的并行处理方法和处理装置。

背景技术

为了提高数据处理性能,现有技术中往往采用数据并行处理的方式,比如采用多个处理引擎,或者采用多个处理器,或者采用多核处理器,等等,从而提供对繁重计算的支持。为了描述方便起见,我们将多处理引擎、多处理器和处理器的多核统一称为多处理器,但本领域普通技术人员可以理解,该并行处理方式可以有不局限于上述举例的不同实现机制。

但是,在数据的并行处理过程中,所处理的数据往往具有异态性,比如部分数据处理涉及共享资源的独占性访问而其他数据不涉及,其中,所指的共享资源独占性访问是指需要对共享资源的独占排他性使用,这种情况下,如果有其他处理器同时进行共享资源的相关操作,将造成共享资源的处理冲突和数据错误。

在上述这种异态性数据的处理过程中,单纯的并行处理方式有可能面临处理性能急剧下降的问题:为了避免不同处理器对于共享资源的独占性访问冲突,必须在并行处理方式下使用令牌或者锁的机制——只有获得了令牌或者锁的一个处理器能够进行共享资源的独占性访问,而其他需要共享资源独占性访问的处理器不得不进入挂起状态,直到获得令牌;显然,这些处理器事实上进行的是共享资源的串行访问处理,被挂起的处理器无法再同时处理其他数据。这种情况下,如果并行处理方式下同时有多个处理器需要进行共享资源的独占性访问处理,那么由于未获得令牌或锁的处理器挂起,将使得不涉及共享资源独占性访问的数据只能通过所剩为数较少、未因涉及共享资源独占性访问而挂起的处理器进行处理;在全部处理器都因涉及共享资源独占性访问而挂起的极端情况下,并行处理事实上成为了串行处理,即使这些不涉及共享资源独占性访问的数据也只能进入等待状态,直到有处理器被释放出来。

上述异态性数据导致的并行处理性能急剧下降问题处理工作方式的不同,其影响的严重程度也有所区别。在非流水线工作方式下,由于整个处理过程可视为一个处理环节,因此资源的释放和重新分配相对灵活,影响程度相对较小;而在流水线工作方式下这种并行处理性能的下降体现的尤为明显。所谓流水线工作方式,是将数据处理过程分为不同的处理环节,每个处理环节由多个处理器并行完成特定的工作,从而大大提高处理效率;这种情况下,由于后续处理环节的处理器依赖于前一处理环节处理器输出的数据,因此,当其中一个处理环节因为涉及共享资源独占性访问的数据发生挂起导致数据拥塞,那么流水线上其后续的处理器都会随之进入等待状态,流水线处理的优势将丧失殆尽。

举例来说,网络地址转换(Network Address Translation)处理被广泛用来扩展IPv4地址,且为了提高NAT处理性能,一般采用多个网络处理器或者多核网络处理器或者多引擎的网络处理器进行处理。特别是,现有技术中NAT业务往往采用流水线处理方式,比如一个NAT包的处理过程被可以被分解为以下4个处理环节且每一处理环节具有多个处理器:报文内容提取、会话表项查询、查询结果处理以及报文修改,该修改可能涉及IP地址的修改或者IP地址和端口的共同修改。

其中,NAT包分为NAT首包和NAT后续包两种,其中,NAT首包的处理过程包括:表项查找结果为不存在该包对应的NAT流表(也称NAT会话表,用于记录相应流的NAT变换关系),因此进行NAT地址池和变换类型的获取,根据NAT规则分配IP和端口并创建首包所在流的正、反向NAT流表(也称NAT会话表,用于记录相应流的NAT变换关系),以及在完成地址转换后转发出去;NAT后续包的处理过程包括:表项查找结果为存在该包对应的NAT流表,因此通过流表直接查找进行地址转换后转发出去;NAT后续包流程的处理速度通常比首包流程的处理速度快数十倍甚至数百倍。

由于在NAT首包处理过程中,需要从少量的公网NAT地址池中选择空闲的地址和端口,因此在表项结果处理环节涉及到共享资源独占性访问的问题,NAT首包和后续包的异态性问题就会显现出来,即,如果在上述表项结果处理环节中使用令牌或者锁的机制来避免资源冲突,就意味着该环节仅有一个处理NAT首包的处理器能够进行处理,而该环节的其他同时处理NAT首包的处理器必需挂起等待资源可用,后续环节的报文修改处理器也不得不空置以等待前面的处理器处理完毕。这种情况下,即使处理器对NAT后续包的处理速度远远高于对于NAT首包的处理速度,但也只能有部分未被挂起的处理器执行对NAT后续包的处理,甚至于极端情况下,所有的处理器都被NAT首包占用,NAT后续包只能等待有处理器释放出来,即后续的NAT数据包要等待的时间至少数十倍甚至数百倍于自身处理时间,因此NAT转发性能将急剧下降。

另外需要指出的现有技术缺陷是,如果采用锁或令牌的机制在并行处理环节下(流水线方式或者非流水线方式)进行数据处理,那么需要在该环节不同的处理器上反复进行令牌转移或者加锁/解锁处理,这种处理极为复杂,开发代价很高。同时,复杂的加锁/解锁过程容易导致处理漏洞的产生,如果被加锁的处理器由于失误或者程序纰漏未获得及时解锁,将导致整个处理过程的瘫痪。

发明内容

本发明的实施例旨在提供能够并行处理异态性数据的技术方案,达到避免共享资源冲突且保证处理性能的目的。

为实现上述目的,本发明的实施例提供了一种异态性数据的并行处理方法,适用于多处理器为部分涉及共享资源独占性访问的异态性数据提供并行处理的情况,包括以下步骤:

S1、接收到涉及共享资源独占性访问的数据的任一处理器将该数据输出到指定的缓存队列中;

S2、对该指定的缓存队列中的数据按照排队或限速的方式重新输入所述多处理器,使同时至多一个处理器对其进行接收和处理。

本发明的实施例还提供了一种异态性数据的并行处理装置,包括为部分涉及共享资源独占性访问的异态性数据提供并行处理的多处理器,还包括一与该多处理器连接的缓存单元,该缓存单元包括缓存队列和发送模块;该多处理器用于直接处理接收到的未涉及共享资源独占性访问的数据,以及,将接收到的涉及共享资源独占性访问的数据转发到该缓存队列;该缓存队列用于缓存任一处理器发送的涉及共享资源独占性访问的数据;该发送模块与该缓存队列连接,用于将该缓存队列中的数据按照排队或限速的方式重新输入该多处理器,使同时至多一个处理器对其进行接收和处理。

由上述技术方案可知,本发明的实施例通过二次输入进行共享资源独占性访问的数据,采用限速或者排队避免处理器竞争,具有以下有益效果:

1、保证同一时刻至多一个处理器进行共享资源独占性访问,避免了共享资源的竞争;

2、克服采用令牌或锁的机制所导致的并行处理能力下降的问题,保证了并行处理的性能;

3、无需频繁调度,易于实现。

通过以下参照附图对优选实施例的说明,本发明的上述以及其它目的、特征和优点将更加明显。

附图说明

图1为本发明提供的异态性数据的并行处理方法一实施例的流程图;

图2A~图2D为图1所示方法的具体实施例的流程图;

图3为图1所示方法进行NAT数据包处理的一实施例的流程图;

图4A、4B为图3所示方法在四级流水线工作方式下的处理过程的示意图;

图5为本发明提供的异态性数据的并行处理装置一实施例的框图;

图6A~图6D为图5所示装置的具体实施例的框图。

具体实施方式

下面将详细描述本发明的具体实施例。应当注意,这里描述的实施例只用于举例说明,并不用于限制本发明。

首先,必须说明的是,本发明所称的异态性数据,是指在处理中部分涉及共享资源独占性访问,部分不涉及共享资源独占性访问的数据,亦即从共享资源独占性访问的角度显示出不同状态的数据。由于现有技术中采用令牌或锁的机制来避免共享资源访问冲突,导致了不涉及共享资源独占性访问的数据也受到处理器挂起的影响造成处理性能的下降,本发明正是针对上述现有技术的缺陷,提供一种在多处理器环境中,不采用令牌或锁得机制来保证共享资源不发生冲突的方案,以提升异态性数据的并行处理性能,同时降低实现复杂度。

请结合附图1,示出了本发明提供的异态性数据的并行处理方法一实施例的流程图,适用于多处理器为部分涉及共享资源独占性访问的异态性数据提供并行处理的情况。有必要指出,这里所指的多处理器,是指对异态性数据进行区别性处理的多处理器,比如对于流水线工作方式下的前期处理器而言,由于并未涉及到共享资源独占性访问,数据的异态性并未体现,因此这些前期处理器并不适用于下述处理方法,沿用其现有技术中的处理模式即可。

本实施例包括以下步骤:

S1、接收到涉及共享资源独占性访问的数据的任一处理器将该数据输出到指定的缓存队列中;

从步骤S1的执行可以看出,即使首次接收到涉及共享资源独占性访问数据的处理器为多个,由于其并不执行共享资源的独占性访问,因此无需进行处理器的挂起和等待操作,而是将涉及共享资源独占性访问的数据送入缓存队列之后即可进行下一数据的处理,不会产生处理瓶颈;

S2、对该指定的缓存队列中的数据按照排队或限速的方式重新输入该多处理器,使同时至多一个处理器对其进行接收和处理;

从步骤S2的执行可以看出,同时至多一个处理器的数据处理,实现的是共享资源的串行访问,能够保证不会发生共享资源竞争;由于在采用令牌或者锁的情况下,实际的共享资源独占性访问也是串行处理,因此,上述步骤S2中的缓冲操作并不会降低涉及共享资源独占性访问的数据的处理效果。

特别是,由于涉及共享资源独占性访问的数据仅占用一个处理器,因此其它处理器可以被解放出来进行不涉及共享资源独占性访问的数据处理,事实上大大提高了处理器并行处理的速度,使并行处理的性能更加均匀。与此同时,由于不用在各处理器之间进行令牌或者锁的申请、释放及交换,实现起来的难度和成本大为降低。

较佳的,步骤S1之前还包括步骤S0:对接收到的数据进行识别,如果涉及共享资源独占性访问,对所述数据执行步骤S1;如果不涉及共享资源独占性访问,则依照现有技术中各处理器的处理方式不变,即由当前处理器直接处理。

作为具体的实施例,根据处理器所处的不同处理环境(例如,流水线工作方式和非流水线工作方式)和采取的不同处理手段(例如,排队和限速),上述步骤可以具有不同的实现方式。

对于非流水线工作方式而言,多处理器中的每一个都独立完成数据处理的全过程,其对于异态性数据的并行处理方法的实现相对简单。

请结合图2A,显示了图1所示方法在非流水线工作方式下通过排队方式实现调度的一个具体实施例,包括以下步骤:

SA1、指定一处理器并为其设置缓存队列作为指定的缓存队列,这也就意味着,从该缓存队列输出的数据仅能够被该指定处理器所处理,如果指定的处理器忙,就需要一直等待,从而保证共享资源的串行访问;

SA2、任一处理器对非从该缓存队列接收到的数据进行识别,涉及共享资源独占性访问,则执行步骤SA3,否则不涉及共享资源独占性访问,执行步骤SA5;

SA3、将涉及到共享资源独占性访问的数据输出到指定的缓存队列中;

SA4、排队在缓存队列中的数据依次重新输入该指定的处理器中,被该处理器串行顺序处理,包括进行共享资源的独占性访问以及其它后续处理;

SA5、直接进行数据处理。

有必要指出的是,在初始化阶段数据的进入是随机的,也就是任何数据都有可能进入该指定的处理器进行处理;与其它未被指定的处理器一样,该指定的处理器对于不涉及共享资源独占性访问的数据直接处理,同时将涉及共享资源独占性访问的数据送入缓存队列。但是,当缓存队列中具有数据之后,该指定的处理器就会在上一个数据释放后,被占用进行缓存队列中数据的串行处理,直到缓存队列中的数据处理完成再进入自由接收状态。显然,当并行处理过程中有大量涉及共享资源独占性访问的数据时,该指定的处理器相当于专职进行共享资源串行访问的处理器,将其它的处理器解放出来进行不涉及共享资源独占性访问的数据的处理。

请结合图2B,显示了图1所示方法在非流水线工作方式下通过限速方式实现调度的一个具体实施例,包括以下步骤:

SB1、预先设置一专用的缓存队列作为指定的缓存队列,此时,该缓存队列是独立设置的,即从该缓存队列输出的数据可能输出到多处理器的任意一个;

SB2、任一处理器对非从该缓存队列接收到的数据进行识别,涉及共享资源独占性访问,则执行步骤SB3,否则不涉及共享资源独占性访问,执行步骤SB5;

SB3、将该涉及共享资源独占性访问的数据输出到指定的缓存队列中;

SB4、将该缓存队列的数据按照预设的速率,重新输入到并行处理器中,由接收到的处理器进行包括共享资源独占性访问在内的处理;其中,该预设的速率不大于数据完成处理器处理的速率;

SB5、直接进行数据处理。

可以理解,由于步骤SB4中缓存队列发送数据的速率不大于数据完成处理器处理的速率,因此,只有在前一个涉及共享资源独占性访问的数据被处理完成后,下一个涉及共享资源独占性访问的数据才会进入;这也就意味着,同一时刻,至多有一个处理器在进行共享资源的独占性访问,因此不会出现共享资源的竞争,也无需进行令牌或者锁的调度。

在具体实现上,不同类型业务数据的处理可能具有不同的速率,实际取值可由网络管理人员根据经验值进行选取,比如一个NAT数据包首包的整体处理包括查询会话表、NAT地址资源的申请、NAT会话表的创建以及NAT转换和转发,依据特定的设备性能具有趋于一致的处理速率,可依此作为限速的依据。具体的限速操作可以通过NP或者包处理器等具有硬件流量整形功能的设备实现。

与非流水线工作方式相比较,流水线工作方式下对于异态性数据的并行处理方法的实现相对复杂一些,这是因为涉及共享资源独占性访问的多处理器可能仅仅是流水线中的一个处理环节,而其它处理环节的处理过程中,数据并不具有异态性的特征。

请结合图2C,显示了图1所示方法在流水线工作方式下通过排队方式实现调度的一个具体实施例,包括以下步骤:

SC1、预先为流水线的每一处理环节指定一处理器并为起始处理环节的指定处理器设置一缓存队列作为指定的缓存队列,其中,前一处理环节指定处理器的输出作为后一处理环节指定处理器的输入,因此,从该缓存队列输出的数据仅能够被流水线上相衔接的指定处理器所处理,如果任一环节的指定处理器忙,就需要一直等待,从而保证共享资源处理环节的串行访问;

SC2、对非从该缓存队列接收到的数据进行识别,涉及共享资源独占性访问,则执行步骤SC3,否则不涉及共享资源独占性访问,执行步骤SC5;

需要指出,在流水线工作方式下,进行数据识别的工作不一定要由执行数据处理的处理器进行,这种识别工作可能在前一处理环节就已经完成;

SC3、将涉及到共享资源独占性访问的数据输出到该指定的缓存队列中;

SC4、将该缓存队列的数据依次重新输入所述起始处理环节的指定处理器中,由该起始处理环节及之后处理环节的指定处理器依次进行包括共享资源独占性访问在内的处理;

SC5、由当前处理器及后续处理器直接进行数据处理。

可以看出,流水线处理方式下,缓存队列中的数据会重新进入流水线,由各级处理环节的指定处理器处理;较佳的,为了提高处理的效率,重新进入流水线的数据可以携带之前环节已经提取的信息,避免或者减少重复工作量。

需要指出的是,这种流水线排队处理方式是有一定的条件限制的,即要求程序在任何一级处理环节都能够实现数据控制,将其调度给指定的处理器来处理,因此,如果流水线芯片的各级处理器是由硬件自动调度,软件无法干预的话,这一方案将无法实现。

请结合图2D,显示了图1所示方法在流水线工作方式下通过限速方式实现调度的一个具体实施例,包括以下步骤:

SD1、预先设置一专用的缓存队列作为指定的缓存队列,此时,该缓存队列是独立设置的,即从该缓存队列输出的数据可能输出到多处理器的任意一个;

SD2、对非从该缓存队列接收到的数据进行识别,涉及共享资源独占性访问,则执行步骤SD3,否则不涉及共享资源独占性访问,执行步骤SD5;

同样的,在流水线工作方式下,进行数据识别的工作不一定要由执行数据处理的处理器进行,这种识别工作可能在前一处理环节就已经完成;

SD3、将涉及到共享资源独占性访问的数据输出到该指定的缓存队列中;

SD4、将缓存队列中的数据按照预设的速率,重新输入到起始处理环节中,由该起始处理环节及之后处理环节中接收到缓存队列输入的数据的处理器进行包括共享资源独占性访问在内的处理;其中,该预设的速率不大于数据完成共享资源独占性访问的速率;

SD5、由当前处理器及后续处理器直接进行数据处理。

由于步骤SD4中缓存队列发送数据的速率不大于完成共享资源独占性访问的速率,因此,在前一个涉及共享资源独占性访问的数据被处理完成时或者之后,下一个涉及共享资源独占性访问的数据才会进入;因此同一时刻,涉及共享资源独占性访问的环节至多有一个处理器在进行处理,因此不会出现共享资源的竞争,也无需进行令牌或者锁的调度。

在具体实现上,可以通过NP或者包处理器等具有硬件流量整形功能的设备,根据实际业务数据的处理速率经验值进行限速。较佳的,在保证不会发生资源抢占的情况下,为了提高处理性能,该限速速率的取值不应太小,比如,可以设定该速率不小于数据完成全部处理环节的速率,以免造成缓存队列中数据的长时间等待。

需要指出,上述实施例是以所有数据都涉及到同一共享资源独占性访问为例进行说明,对于涉及不同共享资源独占性抢占的数据,可以分别输入不同的缓存队列,每一缓存队列均采用上述实施例提供的技术方案。

本领域普通技术人员可以理解,上述方法适合于包括计算机数据处理、电信业务等等所有并行处理部分数据涉及共享资源独占性访问、部分数据不涉及共享资源独占性访问的异态性数据的场合,从而达到避免共享资源竞争、提高处理性能以及降低实现复杂度的目的。

为了便于理解,本发明还提供了使用上述方法进行NAT数据包处理的具体实施例。

其中,NAT数据包的处理过程中,NAT首包的处理涉及到了NAT地址资源的申请和NAT会话表的建立,即涉及到了共享资源的独占性访问,而NAT后续包的处理仅是简单的依照NAT会话表进行报文修改和转发,并未涉及到共享资源的独占性访问问题,因此在某些处理环节表现出了异态性数据的特征。

假设一个15M PPS处理能力的网络处理器,能够最大支持300KPPS的新建流;如果按现有技术来处理,如果有大于300KPPS的新建流到来时,处理器被新建流大量或者全部占用,同时被锁住等候资源释放,极有可能会导致与新建流混在一起的后续NAT数据包被严重阻塞,导致转发性能严重下降。特别是按照流水线工作方式进行并行处理的芯片,由于通常要求在上级流水线处理器加锁、在下级流水线处理器解锁,涉及多级流水线处理器的操作,严重影响流水线的处理效率,且容易出错。

本发明实施例所提供的异态性数据的并行方法通过保持一个处理器进行NAT首包的串行处理,其他处理器进行NAT后续包的并行处理,能够很好的解决上述问题。

由于排队工作方式较为本领域技术人员熟知,因此,这里就限速情况进行一简单介绍,其基本思路为控制NAT首包的报文流量,保证一个处理器能够完全完成NAT首包即新建流的处理,报文如果按照这个速率进入,就不会发生多个处理器同时进行NAT地址池竞争的情况。请结合图3,包括以下步骤:

(1)判断接收到的是NAT首包还是后续包,即将需要竞争共享资源的,性能低的新建流的数据包识别出来;具体识别步骤包括:

S01、对于接收到的NAT会话数据包,提取其IP五元组信息;

S02、根据该IP五元组信息执行NAT会话表查询;

S03、如果NAT会话表匹配失败,则该NAT会话数据包为NAT首包,执行以下步骤;如果匹配成功,则该NAT会话数据包为NAT后续包,根据该NAT会话表内容执行NAT转换后转发。

(2)接收到该NAT首包的处理器将其输出到指定的缓存队列中;

(3)进行流量整形,包速率V小于最大新建流的处理速率;这样,NAT首包的输出速率降低,保证同一时刻仅有一个处理器在接收处理,不会出现共享资源竞争的情况;

(4)经过整形的NAT首包再重新进入处理器进行新建流的流程处理,完成NAT地址资源的申请和会话表的创建,然后转发;

需要指出,在保证不会出现资源竞争的情况下,V的取值应尽可能大。

下面以一个按四级流水线方式工作的网络处理器使用图3所示NAT数据包处理方法的情况为例进行具体说明,请参见图4A:

当一个NAT首包进入时,报文内容提取环节的处理器从报文中得到查询NAT会话表的关键字,进入会话表项查询环节进行会话表查找;首包必然在NAT会话表中查询不到,因此查询表项处理环节的处理器将该NAT首包送入缓存队列进行流量整形后,再重新返回到流水线进行报文处理:对报文进行内容提取后,完成NAT新建流所必需的各种查表操作,然后根据查表结果进行NAT转换所需的地址和端口的获取,完成地址端口转换后,将报文发送出去;

对于后续包,报文内容提取环节的处理器从报文中得到查询NAT会话表的关键字,进入会话表项查询环节进行会话表查找;直接命中NAT会话表,完成地址转换后将报文发送出去。

可以看出,对于NAT数据包使用本发明进行处理后,无需使用令牌或者锁的机制,虽然对新建流性能会有所影响,但原来的方案加锁后实际也只有单引擎工作,所以影响并不大,同时能够极大地提高转发的性能,使得整体性能更为均匀。

同时需要指出,本实施例中是在流水线的查询表项处理环节将涉及共享资源独占性访问的数据输入到缓存队列,但对于一些不可中途退出的流水线芯片,则需要经历报文修改环节后再输入缓存队列,具体可以通过标记等方式实现直接通过,避免报文修改环节对其加以处理,如图4B所示。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括如下步骤:

S1、接收到涉及共享资源独占性访问的数据的任一处理器将所述数据输出到指定的缓存队列中;

S2、将所述指定的缓存队列中的数据按照排队或限速的方式重新输入所述多处理器,使同时至多一个处理器对其进行接收和处理。

所述的存储介质包括:ROM/RAM(Read Only Memory/Random-Access Memory,只读存储器/随机访问内存)、磁碟或者光盘等。

相应的,本发明还提供了异态性数据的并行处理装置的实施例。

请参见图5,显示了上述并行处理装置100的框图,包括为部分涉及共享资源独占性访问的异态性数据提供并行处理的多处理器101,还包括一与该多处理器101连接的缓存单元102,该缓存单元102包括缓存队列1021和发送模块1022。

其中,该多处理器101用于直接处理接收到的未涉及共享资源独占性访问的数据,以及,将接收到的涉及共享资源独占性访问的数据转发到缓存队列1021;

缓存队列1021用于缓存任一处理器101发送的涉及共享资源独占性访问的数据;

发送模块1022与缓存队列1021连接,用于将缓存队列1021中的数据按照排队或限速的方式重新输入多处理器101,使同时至多一个处理器对其进行接收和处理。

由上述提供的并行处理装置100,即使首次接收到涉及共享资源独占性访问的数据的处理器101为多个,由于其并不执行共享资源的独占性访问,因此无需进行处理器的挂起和等待操作,而是将涉及共享资源独占性访问的数据送入缓存队列1021之后即可进行下一数据的处理,不会产生处理瓶颈;

而通过发送模块1022的调度,同时至多一个处理器101进行涉及共享资源独占性访问的数据处理,实现的是共享资源的串行访问,能够保证不会发生共享资源竞争;由于在采用令牌或者锁的情况下,实际的共享资源独占性访问也是串行处理,因此,上述缓冲操作并不会降低涉及共享资源独占性访问的数据的处理效果;

以及,由于涉及共享资源独占性访问的数据仅占用一个处理器101,因此其它处理器101可以被解放出来进行不涉及共享资源独占性访问的数据处理,事实上大大提高了处理器并行处理的速度,使并行处理的性能更加均匀;

与此同时,由于不用在各处理器101之间进行令牌或者锁的申请、释放及交换,大大降低了代码的处理复杂度,实现起来的难度和成本大为降低。

作为具体的实施例,根据处理器101所处的不同处理环境(例如,流水线工作方式和非流水线工作方式)和采取的不同处理手段(例如,排队和限速),上述并行处理装置可以具有不同的实现方式。

在非流水线工作方式下,每个处理器101都会执行数据的完整处理操作,因此其本身设有数据识别功能,以区分数据是否涉及共享资源的独占性访问。

请结合图6A,显示了排队处理方式下并行处理装置100的一个具体实施例,该发送模块1022与一指定处理器101的输入连接,将涉及共享资源独占性访问的数据依次重新输入该指定的处理器中,由该指定的处理器对输入的数据进行包括共享资源独占性访问在内的处理。这也就意味着,从该缓存队列1021输出的数据仅能够被该指定处理器101所处理,如果指定的处理器101忙,就需要一直等待,从而保证共享资源的串行访问。

请结合图6B,显示了限速处理方式下并行处理装置100的一个具体实施例,该发送模块1022与多处理器101的输入连接,将涉及共享资源独占性访问的数据按照预设的速率,重新输入到多处理器101中,由接收到缓存队列1021输入的数据的处理器101进行包括共享资源独占性访问在内的处理;其中,预设的速率不大于数据完成处理器处理的速率。可以看出,这种输入是随机的,但由于速率设置的关系,只有在前一个涉及共享资源独占性访问的数据被处理完成后,下一个涉及共享资源独占性访问的数据才会进入;因此同一时刻,至多有一个处理器在进行共享资源的独占性访问,因此不会出现共享资源的竞争,也无需进行令牌或者锁的调度。

相对的,在流水线工作方式下,本发明所提到的处理器101可能仅会执行数据的有关共享资源独占性访问环节的处理操作,其可能本身设有数据识别功能,也可能在其前面环节设有专门进行数据识别的处理器,处理器101根据前面环节处理器的识别结果区分数据是否涉及共享资源的独占性访问。

请结合图6C,显示了排队处理方式下并行处理装置100的一个具体实施例。该流水线中前一处理环节指定处理器的输出作为后一处理环节指定处理器的输入,且发送模块1022与起始处理环节的一指定处理器连接,将涉及共享资源独占性访问的数据依次重新输入起始处理环节的指定处理器中,由起始处理环节及之后处理环节的指定处理器对缓存队列1021输入的数据依次进行包括共享资源独占性访问在内的处理。因此,从该缓存队列1021输出的数据仅能够被流水线上相衔接的指定处理器所处理,如果任一环节的指定处理器忙,就需要一直等待,从而保证共享资源处理环节的串行访问。

有必要指出的是,流水线排队处理的实现方案需要具备一定的条件才能够加以实现,即程序在任何一级处理环节都能够实现数据控制,将其调度给指定的处理器来处理,而不能够是硬件的自动调度。

请结合图6D,显示了限速处理方式下并行处理装置100的一个具体实施例。该发送模块1022与起始处理环节的并行处理器连接,将涉及共享资源独占性访问的数据按照预设的速率,重新输入到起始处理环节中,由起始处理环节及之后处理环节中接收到所述缓存队列1021输入的数据的处理器进行包括共享资源独占性访问在内的处理;其中,预设的速率不大于数据完成共享资源独占性访问的速率。

可以看出,在前一个涉及共享资源独占性访问的数据被处理完成时或者之后,下一个涉及共享资源独占性访问的数据才会进入;因此同一时刻,涉及共享资源独占性访问的环节至多有一个处理器在进行处理,因此不会出现共享资源的竞争,也无需进行令牌或者锁的调度。较佳的,为了避免缓存队列1021中数据过长时间等待,可以设置预设的速率不小于数据完成全部处理环节的速率。

本领域普通技术人员可以理解,上述方法适合于包括计算机数据处理、电信业务等等所有并行处理部分数据涉及共享资源独占性访问、部分数据不涉及共享资源独占性访问的异态性数据的场合,从而达到避免共享资源竞争、提高处理性能以及降低实现复杂度的目的。

为了便于理解,本发明还提供了使用上述方法进行NAT数据包处理的具体实施例。

并行处理装置100采用流水线工作方式,依次包括进行报文元素提取的多处理器、进行表项查找的多处理器、进行表项结果处理的多处理器101以及进行报文修改的多处理器;其中,进行表项结果处理的多处理器101与缓存单元102连接,缓存单元102与进行报文元素提取的多处理器连接;进行表项结果处理的多处理器101用于将NAT首包发送给缓存单元102,将NAT后续包发送给进行报文修改的多处理器执行NAT转换后转发,以及,对于从缓存单元102重新输入的NAT首包,进行NAT地址资源的申请和NAT会话表的创建,并发送给进行报文修改的多处理器执行NAT转换后转发。

通过上述并行处理装置100,无需使用锁,就可以避免对NAT地址池的抢占,不会对新建流的处理构成大的影响,同时能够保证后续包的转发性能,降低实现难度,使NAT业务的整体处理性能更为均匀。

虽然已参照几个典型实施例描述了本发明,但应当理解,所用的术语是说明和示例性、而非限制性的术语。由于本发明能够以多种形式具体实施而不脱离发明的精神或实质,所以应当理解,上述实施例不限于任何前述的细节,而应在随附权利要求所限定的精神和范围内广泛地解释,因此落入权利要求或其等效范围内的全部变化和改型都应为随附权利要求所涵盖。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号