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

文档序号:7692310阅读:87来源:国知局
专利名称:异态性数据的并行处理方法和处理装置的制作方法
技术领域
本发明涉及数据处理技术领域,尤其涉及一种异态性数据的并行处理方 法和处理装置。
背景技术
为了提高数据处理性能,现有技术中往往采用数据并行处理的方式,比 如采用多个处理引擎,或者采用多个处理器,或者采用多核处理器,等等, 从而提供对繁重计算的支持。为了描述方便起见,我们将多处理引擎、多处 理器和处理器的多核统一称为多处理器,但本领域普通技术人员可以理解, 该并行处理方式可以有不局限于上述举例的不同实现机制。但是,在数据的并行处理过程中,所处理的数据往往具有异态性,比如 部分数据处理涉及共享资源的独占性访问而其他数据不涉及,其中,所指的 共享资源独占性访问是指需要对共享资源的独占排他性使用,这种情况下, 如果有其他处理器同时进行共享资源的相关操作,将造成共享资源的处理冲 突和数据错误。在上述这种异态性数据的处理过程中,单纯的并行处理方式有可能面临 处理性能急剧下降的问题为了避免不同处理器对于共享资源的独占性访问 冲突,必须在并行处理方式下使用令牌或者锁的机制——只有获得了令牌或 者锁的一个处理器能够进行共享资源的独占性访问,而其他需要共享资源独 占性访问的处理器不得不进入挂起状态,直到获得令牌;显然,这些处理器 事实上进行的是共享资源的串行访问处理,被挂起的处理器无法再同时处理 其他数据。这种情况下,如果并行处理方式下同时有多个处理器需要进行共 享资源的独占性访问处理,那么由于未获得令牌或锁的处理器挂起,将使得 不涉及共享资源独占性访问的数据只能通过所剩为数较少、未因涉及共享资 源独占性访问而挂起的处理器进行处理;在全部处理器都因涉及共享资源独 占性访问而挂起的极端情况下,并行处理事实上成为了串行处理,即使这些不涉及共享资源独占性访问的数据也只能进入等待状态,直到有处理器被释 放出来。上述异态性数据导致的并行处理性能急剧下降问题处理工作方式的不 同,其影响的严重程度也有所区别。在非流水线工作方式下,由于整个处理 过程可视为一个处理环节,因此资源的释放和重新分配相对灵活,影响程度相对较小;而在流水线工作方式下这种并行处理性能的下降体现的尤为明 显。所谓流水线工作方式,是将数据处理过程分为不同的处理环节,每个处 理环节由多个处理器并行完成特定的工作,从而大大提高处理效率;这种情 况下,由于后续处理环节的处理器依赖于前一处理环节处理器输出的数据, 因此,当其中一个处理环节因为涉及共享资源独占性访问的数据发生挂起导 致数据拥塞,那么流水线上其后续的处理器都会随之进入等待状态,流水线 处理的优势将丧失殆尽。举例来说,网络地址转换(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首包和后续包的异态性问题就会显现出来,g卩,如果在上述表项结 果处理环节中使用令牌或者锁的机制来避免资源冲突,就意味着该环节仅有 一个处理NAT首包的处理器能够进行处理,而该环节的其他同时处理NAT 首包的处理器必需挂起等待资源可用,后续环节的报文修改处理器也不得不 空置以等待前面的处理器处理完毕。这种情况下,即使处理器对NAT后续 包的处理速度远远高于对于NAT首包的处理速度,但也只能有部分未被挂 起的处理器执行对NAT后续包的处理,甚至于极端情况下,所有的处理器 都被NAT首包占用,NAT后续包只能等待有处理器释放出来,即后续的NAT 数据包要等待的时间至少数十倍甚至数百倍于自身处理时间,因此NAT转 发性能将急剧下降。另外需要指出的现有技术缺陷是,如果采用锁或令牌的机制在并行处理 环节下(流水线方式或者非流水线方式)进行数据处理,那么需要在该环节 不同的处理器上反复进行令牌转移或者加锁/解锁处理,这种处理极为复杂, 开发代价很高。同时,复杂的加锁/解锁过程容易导致处理漏洞的产生,如果 被加锁的处理器由于失误或者程序纰漏未获得及时解锁,将导致整个处理过 程的瘫痪。发明内容本发明的实施例旨在提供能够并行处理异态性数据的技术方案,达到避 免共享资源冲突且保证处理性能的目的。为实现上述目的,本发明的实施例提供了 一种异态性数据的并行处理方 法,适用于多处理器为部分涉及共享资源独占性访问的异态性数据提供并行 处理的情况,包括以下步骤51、 接收到涉及共享资源独占性访问的数据的任一处理器将该数据 输出到指定的缓存队列中;52、 对该指定的缓存队列中的数据按照排队或限速的方式重新输入 所述多处理器,使同时至多一个处理器对其进行接收和处理。本发明的实施例还提供了 一种异态性数据的并行处理装置,包括为部分 涉及共享资源独占性访问的异态性数据提供并行处理的多处理器,还包括一与该多处理器连接的缓存单元,该缓存单元包括缓存队列和发送模块;该多 处理器用于直接处理接收到的未涉及共享资源独占性访问的数据,以及,将 接收到的涉及共享资源独占性访问的数据转发到该缓存队列;该缓存队列用 于缓存任一处理器发送的涉及共享资源独占性访问的数据;该发送模块与该 缓存队列连接,用于将该缓存队列中的数据按照排队或限速的方式重新输入 该多处理器,使同时至多一个处理器对其进行接收和处理。由上述技术方案可知,本发明的实施例通过二次输入进行共享资源独占 性访问的数据,采用限速或者排队避免处理器竞争,具有以下有益效果1、 保证同一时刻至多一个处理器进行共享资源独占性访问,避免了共 享资源的竞争;2、 克服采用令牌或锁的机制所导致的并行处理能力下降的问题,保证 了并行处理的性能;3、 无需频繁调度,易于实现。通过以下参照附图对优选实施例的说明,本发明的上述以及其它目的、 特征和优点将更加明显。


图1为本发明提供的异态性数据的并行处理方法一实施例的流程图;图2A 图2D为图1所示方法的具体实施例的流程图;图3为图1所示方法进行NAT数据包处理的一实施例的流程图;图4A、 4B为图3所示方法在四级流水线工作方式下的处理过程的示意图;图5为本发明提供的异态性数据的并行处理装置一实施例的框图; 图6A 图6D为图5所示装置的具体实施例的框图。
具体实施方式
下面将详细描述本发明的具体实施例。应当注意,这里描述的实施例只 用于举例说明,并不用于限制本发明。首先,必须说明的是,本发明所称的异态性数据,是指在处理中部分涉及共享资源独占性访问,部分不涉及共享资源独占性访问的数据,亦即从共 享资源独占性访问的角度显示出不同状态的数据。由于现有技术中采用令牌 或锁的机制来避免共享资源访问冲突,导致了不涉及共享资源独占性访问的 数据也受到处理器挂起的影响造成处理性能的下降,本发明正是针对上述现 有技术的缺陷,提供一种在多处理器环境中,不采用令牌或锁得机制来保证 共享资源不发生冲突的方案,以提升异态性数据的并行处理性能,同时降低 实现复杂度。请结合附图1,示出了本发明提供的异态性数据的并行处理方法一实施 例的流程图,适用于多处理器为部分涉及共享资源独占性访问的异态性数据 提供并行处理的情况。有必要指出,这里所指的多处理器,是指对异态性数 据进行区别性处理的多处理器,比如对于流水线工作方式下的前期处理器而 言,由于并未涉及到共享资源独占性访问,数据的异态性并未体现,因此这 些前期处理器并不适用于下述处理方法,沿用其现有技术中的处理模式即 可。本实施例包括以下步骤51、 接收到涉及共享资源独占性访问的数据的任一处理器将该数据 输出到指定的缓存队列中;从步骤S1的执行可以看出,即使首次接收到涉及共享资源独占性访 问数据的处理器为多个,由于其并不执行共享资源的独占性访问,因此 无需进行处理器的挂起和等待操作,而是将涉及共享资源独占性访问的 数据送入缓存队列之后即可进行下一数据的处理,不会产生处理瓶颈;52、 对该指定的缓存队列中的数据按照排队或限速的方式重新输入 该多处理器,使同时至多一个处理器对其进行接收和处理;从步骤S2的执行可以看出,同时至多一个处理器的数据处理,实现 的是共享资源的串行访问,能够保证不会发生共享资源竞争;由于在采 用令牌或者锁的情况下,实际的共享资源独占性访问也是串行处理,因 此,上述步骤S2中的缓冲操作并不会降低涉及共享资源独占性访问的数 据的处理效果。特别是,由于涉及共享资源独占性访问的数据仅占用一个处理器,因此其它处理器可以被解放出来进行不涉及共享资源独占性访问的数据 处理,事实上大大提高了处理器并行处理的速度,使并行处理的性能更 加均匀。与此同时,由于不用在各处理器之间进行令牌或者锁的申请、 释放及交换,实现起来的难度和成本大为降低。较佳的,步骤Sl之前还包括步骤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会话表进行报文修改和 转发,并未涉及到共享资源的独占性访问问题,因此在某些处理环节表 现出了异态性数据的特征。假设一个15MPPS处理能力的网络处理器,能够最大支持300KPPS 的新建流;如果按现有技术来处理,如果有大于300KPPS的新建流到来 时,处理器被新建流大量或者全部占用,同时被锁住等候资源释放,极 有可能会导致与新建流混在一起的后续NAT数据包被严重阻塞,导致转 发性能严重下降。特别是按照流水线工作方式进行并行处理的芯片,由 于通常要求在上级流水线处理器加锁、在下级流水线处理器解锁,涉及 多级流水线处理器的操作,严重影响流水线的处理效率,且容易出错。本发明实施例所提供的异态性数据的并行方法通过保持一个处理器进行NAT首包的串行处理,其他处理器进行NAT后续包的并行处理, 能够很好的解决上述问题。由于排队工作方式较为本领域技术人员熟知,因此,这里就限速情 况进行一简单介绍,其基本思路为控制NAT首包的报文流量,保证一个 处理器能够完全完成NAT首包即新建流的处理,报文如果按照这个速率 进入,就不会发生多个处理器同时进行NAT地址池竞争的情况。请结合 图3,包括以下步骤(1) 判断接收到的是NAT首包还是后续包,即将需要竞争共享资 源的,性能低的新建流的数据包识别出来;具体识别步骤包括501、 对于接收到的NAT会话数据包,提取其IP五元组信息;502、 根据该IP五元组信息执行NAT会话表査询;503、 如果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所示。本领域普通技术人员可以理解实现上述方法实施例的全部或部分 步骤可以通过程序指令相关的硬件来完成,所述的程序可以存储于一计 算机可读取存储介质中,该程序在执行时,包括如下步骤
51、 接收到涉及共享资源独占性访问的数据的任一处理器将所述数 据输出到指定的缓存队列中;
52、 将所述指定的缓存队列中的数据按照排队或限速的方式重新输 入所述多处理器,使同时至多一个处理器对其进行接收和处理。所述的存储介质包括ROM/RAM ( Read Only Memory/ Random-Access Memory,只读存储器/随机访问内存)、磁碟或者光盘等。相应的,本发明还提供了异态性数据的并行处理装置的实施例。 请参见图5,显示了上述并行处理装置100的框图,包括为部分涉及 共享资源独占性访问的异态性数据提供并行处理的多处理器101,还包括 一与该多处理器101连接的缓存单元102,该缓存单元102包括缓存队列 1021和发送模块1022。其中,该多处理器101用于直接处理接收到的未涉及共享资源独占 性访问的数据,以及,将接收到的涉及共享资源独占性访问的数据转发 到缓存队列1021;缓存队列1021用于缓存任一处理器101发送的涉及共享资源独占性 访问的数据;发送模块1022与缓存队列1021连接,用于将缓存队列1021中的数 据按照排队或限速的方式重新输入多处理器IOI,使同时至多一个处理器 对其进行接收和处理。由上述提供的并行处理装置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业务的整体处理性能更为均匀。虽然已参照几个典型实施例描述了本发明,但应当理解,所用的术 语是说明和示例性、而非限制性的术语。由于本发明能够以多种形式具 体实施而不脱离发明的精神或实质,所以应当理解,上述实施例不限于 任何前述的细节,而应在随附权利要求所限定的精神和范围内广泛地解 释,因此落入权利要求或其等效范围内的全部变化和改型都应为随附权 利要求所涵盖。
权利要求
1. 一种异态性数据的并行处理方法,适用于多处理器为部分涉及共享资源独占性访问的异态性数据提供并行处理的情况,其特征在于,包括以下步骤S1、接收到涉及共享资源独占性访问的数据的任一处理器将所述数据输出到指定的缓存队列中;S2、将所述指定的缓存队列中的数据按照排队或限速的方式重新输入所述多处理器,使同时至多一个处理器对其进行接收和处理。
2. 根据权利要求1所述的异态性数据的并行处理方法,其特征在于, 所述步骤Sl之前还包括步骤SO:对接收到的数据进行识别,如果涉及 共享资源独占性访问,对所述数据执行步骤S1;如果不涉及共享资源独占性访问,则由当前处理器直接处理。
3. 根据权利要求1所述的异态性数据的并行处理方法,其特征在于,在非流水线工作方式下,还包括预先指定一处理器并为其设置缓存队列作为指定的缓存队列的步骤;所述步骤S2包括将所述涉及共享资源独 占性访问的数据依次重新输入所述指定的处理器中,由所述指定的处理 器对所述缓存队列输入的数据进行包括共享资源独占性访问在内的处 理。
4. 根据权利要求1所述的异态性数据的并行处理方法,其特征在于, 在非流水线工作方式下,还包括预先设置一专用的缓存队列作为指定的 缓存队列的步骤;所述步骤S2包括将所述涉及共享资源独占性访问的 数据按照预设的速率,重新输入到并行处理器中,由接收到所述缓存队 列输入的数据的处理器进行包括共享资源独占性访问在内的处理;其中, 所述预设的速率不大于数据完成处理器处理的速率。
5. 根据权利要求1所述的异态性数据的并行处理方法,其特征在于, 在流水线工作方式下,还包括预先为所述流水线的每一处理环节指定一 处理器并为起始处理环节的指定处理器设置一缓存队列作为指定的缓存 队列的步骤,其中,前一处理环节指定处理器的输出作为后一处理环节指定处理器的输入;所述步骤S2包括将所述涉及共享资源独占性访问 的数据依次重新输入所述起始处理环节的指定处理器中,由所述起始处 理环节及之后处理环节的指定处理器对所述缓存队列输入的数据依次进 行包括共享资源独占性访问在内的处理。
6. 根据权利要求1所述的异态性数据的并行处理方法,其特征在于, 在流水线工作方式下,还包括预先设置一专用的缓存队列作为指定的缓 存队列的步骤;所述步骤S2包括将所述涉及共享资源独占性访问的数 据按照预设的速率,重新输入到起始处理环节中,由所述起始处理环节 及之后处理环节中接收到所述缓存队列输入的数据的处理器进行包括共 享资源独占性访问在内的处理;其中,所述预设的速率不大于数据完成 共享资源独占性访问的速率。
7. 根据权利要求1-6任一所述的异态性数据的并行处理方法,其特征 在于,所述异态性数据为NAT会话的数据包。
8. 根据权利要求7所述的异态性数据的并行处理方法,其特征在于, 所述步骤S0包括501、 对于接收到的NAT会话数据包,提取其IP五元组信息;502、 根据所述IP五元组信息执行NAT会话表査询;503、 如果NAT会话表匹配失败,则所述NAT会话数据包为NAT 首包,执行步骤S1;如果匹配成功,则所述NAT会话数据包为NAT后 续包,根据所述NAT会话表内容执行NAT转换后转发。
9. 根据权利要求7所述的异态性数据的并行处理方法,其特征在于, 所述步骤S2中进行共享资源的独占性访问处理包括进行NAT地址资 源的申请和NAT会话表的创建,以使后续根据所述创建的会话表内容执 行NAT转换后转发。
10. —种异态性数据的并行处理装置,包括为部分涉及共享资源独占 性访问的异态性数据提供并行处理的多处理器,其特征在于,还包括一 与所述多处理器连接的缓存单元,所述缓存单元包括缓存队列和发送模 块;所述多处理器用于直接处理接收到的未涉及共享资源独占性访问的数据,以及,将接收到的涉及共享资源独占性访问的数据转发到所述缓存队列;所述缓存队列用于缓存任一处理器发送的涉及共享资源独占性访问 的数据;所述发送模块与所述缓存队列连接,用于将所述缓存队列中的数据 按照排队或限速的方式重新输入所述多处理器,使同时至多一个处理器 对其进行接收和处理。
11. 根据权利要求10所述的异态性数据的并行处理装置,其特征在 于,所述多处理器为非流水线工作方式下的多处理器,设有数据识别功 能。
12. 根据权利要求11所述的异态性数据的并行处理装置,其特征在 于,所述发送模块与一指定处理器的输入连接,将所述涉及共享资源独 占性访问的数据依次重新输入所述指定的处理器中,由所述指定的处理 器对所述输入的数据进行包括共享资源独占性访问在内的处理。
13. 根据权利要求11所述的异态性数据的并行处理装置,其特征在 于,所述发送模块与所述多处理器的输入连接,将所述涉及共享资源独 占性访问的数据按照预设的速率,重新输入到所述多处理器中,由接收 到所述缓存队列输入的数据的处理器进行包括共享资源独占性访问在内 的处理;其中,所述预设的速率不大于数据完成处理器处理的速率。
14. 根据权利要求10所述的异态性数据的并行处理装置,其特征在 于,所述多处理器为流水线工作方式下的涉及共享资源独占性访问处理 环节中的多处理器,设有数据识别功能或者接收专门进行数据识别的处 理器的处理结果。
15. 根据权利要求14所述的异态性数据的并行处理装置,其特征在 于,所述流水线中前一处理环节指定处理器的输出作为后一处理环节指 定处理器的输入,且所述发送模块与起始处理环节的一指定处理器连接, 将所述涉及共享资源独占性访问的数据依次重新输入所述起始处理环节 的指定处理器中,由所述起始处理环节及之后处理环节的指定处理器对 所述缓存队列输入的数据依次进行包括共享资源独占性访问在内的处理。
16. 根据权利要求14所述的异态性数据的并行处理装置,其特征在 于,所述发送模块与起始处理环节的并行处理器连接,将所述涉及共享 资源独占性访问的数据按照预设的速率,重新输入到起始处理环节中, 由所述起始处理环节及之后处理环节中接收到所述缓存队列输入的数据 的处理器进行包括共享资源独占性访问在内的处理;其中,所述预设的 速率不大于数据完成共享资源独占性访问的速率。
17. 根据权利要求10-16任一所述的异态性数据的并行处理装置,其 特征在于,所述异态性数据为NAT会话的数据包,所述装置采用流水线 工作方式,依次包括进行报文元素提取的多处理器、进行表项査找的多 处理器、进行表项结果处理的多处理器以及进行报文修改的多处理器; 其中,所述进行表项结果处理的多处理器与所述缓存单元连接,所述缓 存单元与所述进行报文元素提取的多处理器连接;所述进行表项结果处理的多处理器用于将NAT首包发送给所述缓存单元,将NAT后续包发 送给所述进行报文修改的多处理器执行NAT转换后转发,以及,对于从 所述缓存单元重新输入的NAT首包,进行NAT地址资源的申请和NAT 会话表的创建,并发送给所述进行报文修改的多处理器执行NAT转换后 转发。
全文摘要
本发明公开了一种异态性数据的并行处理方法和处理装置。该方法包括接收到涉及共享资源独占性访问的数据的任一处理器将该数据输出到指定的缓存队列中;对该指定的缓存队列中的数据按照排队或限速的方式重新输入该多处理器,使同时至多一个处理器对其进行接收和处理。该装置包括与多处理器连接的、包括缓存队列和发送模块的缓存单元,缓存队列用于缓存任一处理器发送的涉及共享资源独占性访问的数据,发送模块用于将缓存队列中的数据按照排队或限速的方式执行重新输入,使同时至多一个处理器对其进行接收和处理。本发明避免了共享资源的竞争,保证了并行处理的性能且易于实现。
文档编号H04L29/08GK101276294SQ20081009790
公开日2008年10月1日 申请日期2008年5月16日 优先权日2008年5月16日
发明者卢胜文 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1